package package2;public class javaEqual { public static void main(String[] args) { String str="test"; String str0="test"; String str1=str; if(str.equals(str0)){ System.out.println("str 和 str0 内容相同"); } else{ System.out.println("str 和 str0 内容不相同"); } if(str==str0){ System.out.println("str 和 str0 地址相同"); } else{ System.out.println("str 和 str0 地址不相同"); } str="0xffff"; if(str==str1){ System.out.println("str && str1 地址相同 "); } }}//str为什么和str0的地址相同?他们都只是内容是相同的?//str1的内容是str赋予的,所以在不做任何变动的情况下str与str1的内容,地址都是一样的;//但是如果我想将改动成,如果str的内容改变,str1的内容也会跟着改变。这种情况应该如何实现?//在java中如果没有指针,将是如何操作内存的地址的?
1 回答
已采纳

Caballarii
TA贡献1123条经验 获得超629个赞
以双引号形式初始化的String,是放在常量池里的,比如你这里的"test",当str0初始化时,常量池里已经有"test",就不会再创建一个,所以str和str0指向的是同一地址。
java的String类型是final的,所以str改变str1也跟着改变请使用StringBuilder等等其他非final类型的类
用了java就不要考虑操作内存地址了
添加回答
举报
0/150
提交
取消