Java中String的不可变性和创建String的内存变化
来源:互联网 发布:淘宝店铺怎么装修上新 编辑:程序博客网 时间:2024/05/22 12:30
String的不可变性并不是指它的值不可变,而是原来那块所占的内存不能修改
比如说:String s="123" s ="12345" 这时候s的值变了,并不是覆盖了原有堆内存中,而是重新在堆中创建的新的内存区域并将s引用指向了新内存。
ps:StringBuffer和StringBuilde可以在原内存块基础上修改,不需要创建新的内存区域。StringBuffer线程安全效率不高,StringBuilder线程不安全效率高
2.创建String内存如何进行分配
2.1 String str="123" 会在常量池划分内存区域 然后在堆内存划分区域。若第二次又出现 String strs="123" .Jvm会去常量池中看是否存在相同内容的字符串。若存在引用指向strs.所以strs str引用地址一样 str==strs 所以为true
2.2 String str="123" String str2="12"+"3" 编译器会自动合并str2 发现内容一样 地址就一样
2.3 String s1="123" String s2="1" String s3=s2+"23" 虽然s3和s1内容一样 但是比较会抛出false,因为编译器在编译期间无法确定s2的值,所以会分配新地址给s3, 所以比较地址时就不一样
阅读全文
0 0
- Java中String的不可变性和创建String的内存变化
- Java中String类型的不可变性和驻留池
- String的不可变性
- String的不可变性
- String的不可变性
- String的不可变性
- java之String对象的不可变性
- Java中String类不可变性的好处
- String 的相等性和不可变性
- String类的不可变性
- String 类的不可变性
- String对象的不可变性
- 浅谈java中String类的不可变性(immutability)和final关键字修饰
- String 的共享行和不可变性的理解.
- Java中的String的 方法归类 及其 不可变性
- 深入理解java String 对象的不可变性
- Java的string类常量池及不可变性
- Java问题探讨之String的不可变性
- canvas系列教程03-柱状图项目1
- 如何获取手机性能测试数据FPS
- android屏幕亮度调节
- easymybatis——mybatis开发利器
- siebel编程
- Java中String的不可变性和创建String的内存变化
- An overview of gradient descent optimization algorithms
- jquery指定输入框获得焦点
- canvas系列教程04-柱状图项目2
- ffmpeg 的那些坑
- scau 9716 矩形的并
- 顺序容器初识
- SpringBoot:AOP Aspect切面编程
- CentOs7下搭载分布式Hadoop2.9