String学习总结笔记

1、String的基础概念:

String:字符串,使用一对“”引用起来表示。

1:String声明为final的,不可被继承

2:String实现了Serializable接口:表示字符串支持序列化

            实现了Comparable接口:表示String可以比较大小

3:String内部定义了final char[] value 用于存储字符串数据

4:String:代表不可变的字符序列。简称:不可变性

                 体现:当对字符串重新赋值时,需要重写制定内存区域赋值,不能使用原有的value进行赋值

                           当对现有字符串进行连接操作时,也需要重新指定内存区域赋值。

                           当调用String的replace()方法修改指定的字符或字符串时,也需要重新指定区域赋值,不能在原有基础上进行赋值。

5:通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中(new 在堆中)。

6:字符串常量池是不会存储相同内容的字符串的

s1==s2 是正确的 

也就是说s1 /s2都指向的方法区的常量池中同一块内存地址,原因就是s1会创建字符串abc 创建之后代码执行到s2进栈,会先在常量池中查找abc,如果存在就不会创建,如果没有才会进行开辟新的地址创建。

 

2:String的创建

String通常有两个:

通过字面量定义

通过new+构造器的方法

他们之间的存储和创建如图,s3和s4会通过new 在堆中实例两个对象。

 

3、String不同拼接的区别:

首先S3和S4是相等的,原因就是他俩直接是字面量赋值的,尽管s4还进行了拼接,但是只涉及到两个存储空间栈和方法区的常量池。在常量池中不允许存在两个内容相同的字符串,也就是s3和s4是相同的。

之后的S5S6S7等等 ,均涉及到引用其他对象了,也就是说在堆里面new了新对象了。将引用的是堆里面新创建的对象。

结论:常量和常量的拼接相当于在常量池中,常量和变量的拼接,结果在堆中。使用intern()那就是在常量池中操作的。

 

注:截图是学习java基础阶段,参考尚硅谷的教学视频。仅作为自己的学习一个记录,如果对您有所帮助,那是一件功德无量的事情。

白日不到处,青春恰自来。

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值