概述
说明:可以事先学习下:
📁JVM
1.前置介绍
(1)发现在使用String类处理字符串时,由于字符串的不可变性,会产生很多中间变量,而且也会产生很多在常量池中废弃的数据,而使用StringBuilder可以避免这种情况的发生;
(2)而在StringBuilder出现之前,StringBuffer是很常用的:
注:StringBuilder和StringBuffer的方法基本上是一样的,在程序开发中基本是可以完全替代的;
线程安全的时候,其速度相对会慢一些;
2.StringBuilder类常见方法罗列
StringBuilder类中还有:这些方法没有必要记忆,只需要有个印象,知道StringBuilder类可以做什么就好了,用的时候去查API
append()方法:(有很多重载的形式)在字符串的末尾增加内容;
charAt(int inidex)方法:取某个位置处的字符;
delete(int start,int end):删除字符的方法;
indexOf(String str):定位子字符串的位置;
insert(int offset,***):(有很多重载形式):=在字符串的指定位置处插入内容;
length():返回字符串的长度;
replace(int start,int end,String str):替换字符串的某个字串;
subString(int start,int end):求子串;
toString():将StringBuilder类型的对象,转换成String类型的对象;
3.String和StringBuilder的区别和应用场景
注:可能StringBuilder类的诸如append()这些方法的存在,使得我们在处理字符串时可以尽量不去创建新的字符串,从而提升一些效率和降低系统压力吧
String类
String是一个类,如:String s1 = “zifuchaun”;这是把s1当成了一个String类型的对象;
1.创建字符串对象常见的三种方式
(注:(1)getBytes():方法的作用是在网络传输的时候,字符串需要以二进制字节形式的传输;
(2)这些方法用时即查就行,没必要硬记;)
2.字符串定义的其他方式
注:equals()方法;字符串和字节数组转换
1.String的方法很多,没必要全部一次性记忆,用的时候可以再查
常见方法举例:
(1)取某位置的单个字符;取子字符串
(2)字符或子字符串的位置
字符串和Byte数组间的相互转换
网络上传输的数据是二进制字节型的,所以在进行网络传输时,需要字符串和Byte数组的相互转换。
== 和equals()方法的区别
1.== 和equals()方法的区别
String类重写了equals()方法,String类的equals方法只要值一样就返回true,== 比较的是对象的内存地址是否一样。
(1)使用new这种方式创建对象时,会在堆中新开辟内存空间存放对象;
(2)采用直接变量赋值的方式创建的对象的时候,会从常量池的地方开辟空间存放值;
运行结果:
2.附compareTo()方法和concat()方法
compareTo()方法:比较值的大小( 注:不要重复造轮子)
concat()方法:连接字符串
str1.concat(str2)是把str1和str2的内容连接起来,然后把连接后的值输出,但是连接操作并没有改变str1和str2的值
字符串的不可变性
目前开看:String类的字符串,对其的截取,使用均只是“借用”,并不会对原字符串造成影响
1.字符串的不可变性,三个简单例子
结果:
结果:
结果:
注:
(1)目前看来,这篇博客并没有什么内容;
(2)发现在使用String类处理字符串时,由于字符串的不可变性,会产生很多中间变量,而且也会产生很多在常量池中废弃的数据,而使用StringBuilder可以避免这种情况的发生;
StringBuilder常用方法举例
注:这篇博客并没有什么内容……这些方法没必要记,只需要有影响,用的时候查API
1.append()方法
append()方法:后面追加内容
发现,其并没有在内存中生成新的对象,也没有生成新的字符串常量;
2.其他方法
其他诸如delete()方法,insert()方法,replace()方法,,subString()方法等,很自然,也很容易理解;如果在使用的时候存在诸如索引等模糊的地方,去查API就行,或者自己测试下,以求正确使用。
真没必要记。。。。。