String类
- 表示不可变的字符串
- String的创建
- 方法1:String str=new String("值");
- 方法2:String str="值";
String str=new String("abc");该代码创建几个对象?
- 1.使用new关键字在堆中创建的String对象
- 2.有字符串的字面量"abc",作为直接量创建在常量池当中.
1.String字符串
- 不可变长的字符串
String s1=”123abc”;//创建了一个对象,常量池中的字符串123abc
String s2=new String(“abc”);
-创建了两个对象,在堆内存中new一个对象;常量池中字符串对象abc
String s3=s1+”“;//创建一个StringBuilder对象
-字符串的凭借,底层通过new StringBuilder对象通过该对象的append方法实现拼接
String s4=”123”+”abc” ;//由于都是字符串的直接量直接在编译时处理成常量
String s1="123abc";//s1指向常量池中的123abc
String s2=s1+"";//s2指向堆当中的StringBuilder对象
s1==s2;//false
String s3="123"+"abc";
s3==s1;//true
String s4=1+"2"+"3"+"abc";
s1==s4;//true
String s5=1+2+"3"+"abc";//33abc
s1==s5;//false;
String s6=new String("123abc");
s1==s6;//false
final String h="123";
String w=h+"abc";
s1==w;//true
2.String的API
|- byte[] String#getBytes();根据系统的默认编码将字符串转成byte序列
|- byte[] String#getBytes(String charsetName);根据指定的字符编码将字符串转成指定的byte
- 对于中文而言,常见的字符集:
- gbk:windows系统默认的中文字符编码,一个中文两个字节
- utf-8:Mac,Linux系统的默认中文字符编码,一个中文三个字节
- new String(byte[]);根据系统的默认编码将byte序列转成字符串
- new String(byte[],charsetName);根据指定的编码将byte序列转成字符串
3.StringBuffer和StringBuilder
|-StringBuffer是线程安全的可变字符串,由jdk1.0k提供(不推荐使用,可能影响效率)
|-StringBuilder是线程不安全的可变字符串,由jdk5.0提供,用于替换StringBuffer
注意:如果有大量字符串的拼接推荐使用StringBuilder#append方法