JavaSE——String类型

更新内容:
一、常量池
1.在JVM底层维护一个常量池,如果采用了直接赋值的模型进行String类对象的实例化操作,那么该字符串内容将自动保持在这个池中。
2.如果下次继续使用直接赋值的模式声明String类对象,此时对象池之中如若有指定内容,将直接进行引用。
3.如若没有,则开辟新的字符串对象而后将其保存在对象池之中以供下次使用。
4.String类的共享设计模式
在这里插入图片描述
若使用构造方法创建字符串(不论之前有没有创建’‘hello’'这个对象,都会创建一个新的对象,浪费空间)。
在这里插入图片描述

二、字符串的修改
字符串是一种不可变对象. 它的内容不可改变。
例如以下代码:

String str = "hello" ;
str = str + " world" ;
str += "!!!" ;
System.out.println(str);
// 执行结果
hello world!!!

形如 += 这样的操作, 表面上好像是修改了字符串, 其实不是。内存变化如下:
在这里插入图片描述
明显可以看到,在相加的过程中,实际是str指向的地址不停在改变,并不是str指向的对象本身发生了改变。

---------------------------------------------------分割线-------------------------------------------------------------

一、String类的创建
1、String str = “hello”; >>>>>>>采用直接创建的方式,对象在堆中的常量池中
2、String str = new String(“hello”); >>>>>>>>>使用String构造方法创建,对象没在常量池,是在堆中的其他地方
3、char[] array = {‘h’,‘e’,‘l’,‘l’,‘o’}; >>>>>>>>>>>>>使用String的构造方法,原理同上
String str = new String(array);

注意
①字符串的相等与否,不是对字符串内容的比较,而是对其引用地址的比较。
*** ②字符串的加法,不是 String 对象本身发生改变, 而是拼接后引用到了其他的对象,所以在使用时要避免这种代码 : ***
String str = “hello” ;
for(int x = 0; x < 1000; x++) {
str += x ;
}
因为会开辟了太多内存,效率比较低

二、字符串的操作
1、字符串的比较
在这里插入图片描述
在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系返回三类内容:
相等,返回0
小于,返回内容小于0
大于,返回内容大于0

2、字符串的查找

3、字符串的替换
在这里插入图片描述
字符串是不可改变的,所以替换后返回一个新的字符串

4、字符串的拆分
在这里插入图片描述

5、字符串截取
在这里插入图片描述
索引从0开始,注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标

6、其他用法
在这里插入图片描述
三、StringBuffer 和 StringBilder
1)创建一个StringBuffer

StringBuffer sb = new StringBuffer();//1.直接初始化
StringBuffer sb = new StringBuffer("helloworld");//2.利用String初始化

2)请解释String、StringBuffer、StringBuilder的区别:
①String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
②StringBuffer与StringBuilder大部分功能是相似的
③StringBuffer采用同步处理,属于线程安全操作;而StringBuilder采用异步处理,属于线程不安全操作
④String类中的大部分方法,SBuffer,SBuilder都有。

注意
String和StringBuffer类不能直接转换。如果想直接转换,可采取如下原则:
①String变为StringBuffer: 利用StringBuffer的构造方法或append()方法(如下代码)。

StringBuffer sb2 = new StringBuffer();
		sb2.append("111");							//通过append方法将字符串转换为StringBuffer对象
		System.out.println(sb2);

②StringBuffer变为String: 调用toString()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值