目录
▮可变的String:StringBuilder和StringBuffer
字符串常用方法:http://t.csdn.cn/xTOAm
欢迎各位在评论区提问或指出问题,请多多赐教 ——海鱼🐟
▮String的基础用法
String的两种定义方式就不多说了,String的基础用法里也就“+”和“+=”注意一下。“+”表示拼接;“ str += " word" ”后,str = "hello word",注意word前有个空格,“+”不会自动添加空格。
▮String是什么
▪String是一个类
String不是一个基础类型,它是一个类。String里有一个private和final修饰的char[ ]数组,还有若干个public修饰的方法即可。这些方法里有的是类方法,有的是实例方法。
▪String对象的创建
因为String是一个类,所以“str”是一个对象的引用。在str指向的对象里,仅有一个类型为char[ ]的实例变量value。value是一个char[ ]的引用,指向堆区里的char数组。
从上可以看出,“str”只是一个指向对象的引用;所以,通过“ str1 == str2 ”来比较相同字符串是错误的。“ == ”比较的是字符串对象所在的地址,得用equals( )实例方法来比较字符串是否相同。
▮String常用方法
String常用方法:http://t.csdn.cn/xTOAm
▮String的不可变性
因为不可修改性的存在,因为final修饰了value;所以,String中很多看似修改了value的方法,其实都是通过创建新的String对象来实现的。比如,字符串连接方法:concat(String str)。
▮可变的String:StringBuilder和StringBuffer
当我们想去改变字符串时,目前还是多多使用StringBuilder。它所有的方法跟String的方法差不多,它的变量里也有value,只多了一个记录已使用字符个数的count。
▮常量字符串
▪字符串常量池
关于字符串常量池的内容我们不多讲,只需知道字符串常量池用来存放常量形式的字符串,这些字符串都是String的对象,使用此字符串时,调用的都是常量池中那个对应String对象。
因为常量也是对象,所以常量也有String的方法,比如,"hello".length();
▪共用一个对象
str1 = “hello”,不是new出一个新的对象再传给str,而是直接把对象"hello"的位置传给str1。所以str1 == str2,他们指向同一个常量字符串对象,地址自然相同。但要注意,比较字符串是否相同还是得用equals( )方法,常量字符串这只是一个特殊情况。
•代码实例
public static void main(String[] args) { String str1 = "hello"; String str2 = "hello"; if(str1 == str2){ //比较的是对象地址,而不是对象里的char[]数组 System.out.println("str1 == str2"); } }
•运行截图