String与StringBuilder类
Sting与StringBuilder类
今天重温了一下String类🥱
想起来自己看书理解的时候觉得有些晦涩难懂 这个类在Java中被单独划出去了 不同于C/C++
特此复习🍃
String类简述:
- 在程序设计中经常涉及处理字符序列有关的算法,为此
Java专门提供用来处理字符序列的String类 String类在java.lang包中,被系统默认引入- 需要注意的是⚠️:
Java把String类定义为final类,因此用户不能拓展String类,即String类不能有子类
构造String对象:
String对象被习惯的翻译为字符串对象
-
常量对象:
用双引号括起来的字符序列 String a = "你好" String a = "boy"Java把String常量放入常量池(简单理解:常量池的数据在程序运行期间再也不允许改变) -
String对象:可以使用String类声明并创建对象 String s =new String("hi"); String t =new String("hi");new运算符每次都要开辟新天地,但凡用new构造出的对象都不在常量池中 -
引用String常量
String常量是对象,因此可以把String常量的引用赋值给一个String对象 String s1,s2; s1 = "你好"; s2 = "你好";
-
不可变对象🙅
举例:
String s = "hello"; s = "hello world" 好像string 重新赋值就变了,但是 对象的不可变性是指对象本身的数据不会改变 将变量重新赋值是创建了一个新对象,然后将新对象的引用赋值给变量
String对象的并置
字符串类是一个比较特殊的类,他是Java中唯一重载运算符的类!(Java不支持运算符重载,String是特例 )🌟
类型一:赋值号的右边是两个常量运算(使用StringBuilder)
String testOne = "你"+"好";
//被优化为---->
String testOne = "你好";
在编译原理中,有常量优化技术,常量折叠是一种Java编译器使用的优化技术
可能会被编译器优化为StringBuilder来减少对象创建(对象频繁创建时很费时间同时占内存的!)
//使用StringBuilder
String str1="你";
String str2="好";
String result=(new StringBuilder(String.valueOf(str1))).append(str2).toString();
//使用StringBuilder,会采用类似于第一种实现,显然会更快!
类型二:赋值号的右边有变量
String testTwo = you+hi;
//you + hi相当于new String("你好")
会在动态区产生新对象!

StringBulider的一点点拓展啦🤏:
StringBuilder也是一个类,但是它能够存储可变长度的字符串!它支持在字符串末尾增加
StringBuilder builder=new StringBuilder();
builder
.append("a")
.append("bc")
.append("d"); //链式调用
String str = builder.toString();
System.out.println(str);
重写的append方法:
@Override
public StringBuilder append(String str) {
super.append(str);
return this;//因为返回的是自己所以支持链式调用
}


posted on 2022-05-13 16:39 AcherLoveCode 阅读(34) 评论(0) 收藏 举报
浙公网安备 33010602011771号