- public String() 创建一个空白字符串对象,不含任何内容
- public String(char[] chs) 根据字符数组的内容,来创建字符串对象
- public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
- String s = "abc" 直接赋值的方法创建字符串对象,内容就是 abc
- 推荐使用直接赋值的方法创建字符串对象
- 通过 new 创建的字符串对象(前三种),每一次 new 都会申请一个内存空间,即使内容相同,但地址是不同的
- 通过直接赋值的方法创建字符串对象,只要字符序列完全相同(顺序,大小写都相同),无论在程序中出现几次,都会只创建一个对象,用一个内存地址
public class HelloWorld { public static void main(String[] args) { char[] chs = {'a', 'b', 'c'}; byte[] bys = {97, 98, 99}; String s1 = new String(chs); String s2 = new String(chs); String s3 = new String(bys); String s4 = "abc"; String s5 = "abc"; System.out.println(s1 == s2); System.out.println(s4 == s5); System.out.println(s1 == s4); System.out.println("s1:" + s1); System.out.println("s3:" + s3); System.out.println("s4:" + s4); System.out.println(s1.equals(s3)); System.out.println(s4.equals(s5)); } } //输出: //false //true //false //s1:abc //s3:abc //s4:abc //true //trueString 字符串的比较
不能直接用 == 进行比较,因为对于引用类型,该符号比较的是地址值是否相同,无法比较内容是否相同
那么对于字符串比较内容是否相同,是通过一个方法来实现 equals()
String 字符串常用方法- s.length()
- s.charAt()
- s.equals()
//str.length() 字符串的长度 //str.charAt(index) 遍历字符串的每个字符,注意不能直接用索引,是错的,和数组不同 //char[] chs = {1, 2, 3} //String s = new String(chs) //注意:chs是字符数组,s是字符串对象 //str.equals() 比较两个字符串是否内容相同StringBuilder
StringBuilder 是一个可变的字符串,我们可以把它看作是一个容器
StringBuilder 和 String 的区别:
- StringBuilder :内容是可变的
- String :内容是不可变的
如果想对字符串进行拼接和反转,可以先转为 StringBuilder 类型,在调用方法,比较简单,再转回原来 String 类型
- sb.append(任意类型) :添加数据并返回对象本身
- sb.reverse()
public class HelloWorld { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); StringBuilder sb2 = sb.append("hello"); //返回对象本身 System.out.println("sb:" + sb); System.out.println("sb2:" + sb2); System.out.println(sb == sb2); } } //输出: //hello //hello //true public class HelloWorld { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("hello"); sb.append("world"); sb.append("java"); sb.append(100); System.out.println("sb:" + sb); } } //输出: //helloworldjava100 //链式调用: public class HelloWorld { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("hello").append("world").append("java").append(100); System.out.println("sb:" + sb); sb.reverse(); System.out.println("sb:" + sb); } } //输出: //sb:helloworldjava100 //sb:001avajdlrowolleh两种类型相互转化
- String s = sb.toString() :StringBuilder 转换为 String
- StringBuilder sb = new StringBuilder(s) : 通过构造方法将String 转换为StringBuilder
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)