2017-11-02 20:02:06

String:代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

*常用方法

  • String值不能被改变的理解
        String s = "Hello";

        s += "world";

        System.out.println(s);

这里的“Hello”,“world”,“Helloworld”会分别在字符串常量区分配内存。所以字符串并没有变。

  • 不同构造方法的区别
String s1 = new String("Hello");
String s2 = "Hello";
s1 == s2 //false
s1.equals(s2) //true

== :引用中的等号是判断地址值是否相等

equals() :默认情况下也是比较地址值,但是String类中重写了该方法,用来比较字符串的值

  • "String+变量" 的操作无法在编译期间进行优化的解释

“String+变量”因为编译时无法进行优化,所以这一条语句的操作是在运行时进行的,且会产生新的对象,而不是直接从jvm的string池中获取。

java中String的+运算符编译后其实是转换成了这样的代码:
String b = new StringBuilder().append("a").append(bb).toString();
看下StringBuilder的toString方法,使用new String(...);来构造一个String对象。
String有两种构造方法,一种是new String,在jvm堆中分配,一种是String a="ab"这种方式,这种特殊的方式过程是这样的:JVM会先在string pool中去查找是否存在"ab"这样的字符串,如果存在就把引用地址返回,如果不存在,则构造一个并把它放到string pool中。
很明显这样的构造方法是使用了new来构造的,因此在jvm中的引用地址跟a肯定是不一样,你使用==来比较,比较的是它们的引用地址,它们肯定不相等,当然是false了。

  • 判断功能

public boolean equals(Object anObject):比较内容是否相同,区分大小写。

public boolean equalsIgnoreCase(String anotherString):比较内容是否相同,不区分大小写。

public boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true。

public boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始。

public boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。

  • 获取功能

public int length():返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。 // "中文".length()==2

public char charAt(int index):返回指定索引处的 char 值。

public int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

public String substring(int beginIndex):返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

public String substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

  • 转换功能

public byte[] getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

public char[] toCharArray():将此字符串转换为一个新的字符数组。

public static String valueOf(int/char[]/double x):将任意类型的数据转成String。

public String toLowerCase():所有字符都转换为小写。

public String toUpperCase():所有字符都转换为大写。

public String concat(String str):拼接,类似于+。

  • 其他功能

public String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

public String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。

public String trim():返回字符串的副本,忽略前导空白和尾部空白。

public int compareTo(String anotherString):按字典顺序比较两个字符串。如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

public int compareToIgnoreCase(String str):按字典顺序比较两个字符串,不考虑大小写。

public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。

Java 常用对象-String类的更多相关文章

  1. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  2. Java 常用对象-Math类

    2017-11-02 21:26:18 Math类:Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. *属性摘要 *常用方法 random() : 返回[0.0,1.0 ...

  3. Java 常用对象-Date类和Calender类

    2017-11-02 22:29:34 Date类:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值 ...

  4. Java 常用对象-System类

    2017-11-02 21:41:06 System类:System 类包含一些有用的类字段和方法.它不能被实例化. *常用方法 public static void gc() 运行垃圾回收器. 调用 ...

  5. Java 常用对象-StringBuffer类

    2017-11-02 20:57:02 StringBuffer:线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.虽然在任意时间点上它都包含某种特定的字符序列,但通过某些 ...

  6. Java 常用对象-Scanner类

    2017-11-02 16:33:11 Scanner类:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白 ...

  7. Java 常用对象-Object类

    2017-10-31 23:42:08 Object类:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 或者说,每个类都直接或者间 ...

  8. Java 常用对象-BigInteger类

    2017-11-02 21:57:09 BigInteger类:不可变的任意精度的整数.所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型).BigInteger ...

  9. Java常用API(ArrayList类)

    Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...

随机推荐

  1. #C++初学记录(贪心算法#结构体#贪心算法)

    贪心算法#结构体 Problem Description "今年暑假不AC?" "是的." "那你干什么呢?" "看世界杯呀,笨蛋 ...

  2. How To Join XLA_AE_HEADERS and RCV_TRANSACTIONS(子分类账到事务处理追溯)

    Applies to:   Oracle Inventory Management - Version: 12.0.6<max_ver> and later   [Release: 12 ...

  3. unity Texture贴图纹理及相关属性

    Texture资源是Unity3d游戏开发中用途最广泛的资源之一,被引用于诸如界面UI. Mesh模型 .粒子效果等.还有一些特殊的Texture资源,如:Movie Texture:视频资源.Ren ...

  4. VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)

    上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...

  5. 2016-2017-2 20155309南皓芯java第五周学习总结

    教材内容总结 这一周学习的进度和前几周比较的话是差不多的,都是学习两章. 异常处理 1.理解异常架构 2.牚握try...catch...finally处理异常的方法 3.会用throw,throws ...

  6. Go语言初尝

    对于语言设计之争, 唯一需要牢记的一句话是: 如果把 C 变成 C++, 那么 C 就消失了. Go 是一个轻量级的简洁的支持并发的现代语言,  可以用于探索性个人项目, 这是我想学这门语言的主要原因 ...

  7. clock_gettime接口和linux时间系统

    RTC/OSCRTC,Real Time Clock,真实时钟,也叫做CMOS时钟,又叫walltimeOSC,Operation System Clock,系统时钟.在开机时操作系统取得RTC中的时 ...

  8. web前端----jQuery扩展(很重要!!)

    1.jQuery扩展语法 把扩展的内容就可以写到xxxx.js文件了,在主文件中直接导入就行了. 用法1.$.xxx() $.extend({ "GDP": function () ...

  9. Antlr4 入门

    一.ANTRL 是什么 ANTLR 是用JAVA写的语言识别工具,它用来声明语言的语法,简称为“元语言”(meta-language). ANTLR 语法识别一般分为二个阶段: 1.词法分析阶段 (l ...

  10. JS四舍五入保留两位小数

    //四舍五入保留2位小数(若第二位小数为0,则保留一位小数) function keepTwoDecimal(num) { var result = parseFloat(num); if (isNa ...