一、Java中字符串的不变性
String对象创建后则不能修改,是不可变得,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如图所示:
运行结果:
总结:
1.通过String s1="爱慕课",声明了一个字符串对象,s1存放了到字符串的引用,在内存中的存放引用关系如图所示:
然后通过s1="欢迎来到:"+s1;改变了字符串s1,其实质是创建了一个新的字符串对象,变量s1指向了新创建的字符串对象,如下图所示:
2.一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以通过使用StringBuffer或者StringBuilder.
3.每次new一个字符串就是产生一个新的对象,即使两个字符串的内容相同,使用"=="比较时也为"false",如果需要比较内容是否相容,应使用"equals()"方法。
二、Java中String类的常用方法
String类的常用方法:
结合代码熟悉下方法的使用:
运行结果:
注意:
1.字符串str中的字符的索引从0开始,范围为0到str.length()-1;
2.使用indexOf进行字符串或字符串的查找时,如果匹配返回位置索引;如果没有匹配结果,返回-1;
3.使用substring(beginIndex,endIndex)进行字符串截取时,包括beginIndex位置的字符,不包括endIndex位置的字符。
实例二:
运行结果:
注意:
"=="和equals()有什么区别呢:
==:判断两个字符串在内存中的首地址是否相同,即是否是同一个字符串对象
equals:比较存储在两个字符串对象中的内容是否一致
三、Java中的String Builder类的常用方法
例如:在下面的实例代码中,创建了String Builder对象,用来存储字符串,并对其进行追加和插入操作,这些操作修改了str对象的值,而没有创建新的对象,这就是String Builder和String的最大的区别
运行结果: