为了账号安全,请及时绑定邮箱和手机立即绑定

初学者的一些关于Java中的equal和==以及内存操作之间的一些问题

初学者的一些关于Java中的equal和==以及内存操作之间的一些问题

慕斯卡2612611 2015-12-07 11:32:31
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就不要考虑操作内存地址了

查看完整回答
反对 回复 2015-12-07
  • 1 回答
  • 0 关注
  • 1676 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号