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 阅读(23) 评论(0) 编辑 收藏 举报