栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中关于改变String变量中字符串序列后地址值的变化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中关于改变String变量中字符串序列后地址值的变化

java中由于String底层为一个char型数组,存储在方法区的常量池当中,所以当使用常量赋值以及“+”连接时,局部变量所指向的都为常量池中的地址值,这也是为什么比较1式为ture的原因。但当至少有一个量为变量时,“+”连接就代表在堆中new出来新的对象,因为在堆空间中不同变量指向的对象地址值不同,导致了比较2式的结果,s6采用了new的方式构建了一个String类型,也会在堆空间new一个新的对象,因此比较3式也为false,但s5和s6在堆中的char型数组属性都指向了方法区常量池中的同一个对象(常量池中同一个数组只能存在一个),如果采用变量自身”+=“的方式组建的char型数组,该变量的地址值(hashCode()值)也会被更改。

String s1 = "Java";
System.out.println(s1.hashCode());//2301506
String s2 = "Code";
String s3 = "Java" + "Code";
String s4 = "JavaCode";
String s5 = s1 + s2;
String s6 = new String("JavaCode");
System.out.println(s3 == s4);//比较1式,ture 
System.out.println(s4 == s5);//比较2式,false
System.out.println(s5 == s6);//比较3式,false
s1 += 1;
System.out.println(s1.hashCode());//71346735
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270575.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号