关于String是否相同判断的问题

关于String是否相同判断的问题

下面这段代码运行结果有点疑问,问什么判断2是false呢?str4和str3不是引用的同一对象吗?
public class test {
    public static void main(String[] args) {
        //引用判断1
        String str1=new String("hello");
        String str2=new String("hello");
        System.out.println(str1==str2?true:false);
        //引用判断2
        String str3=new String("str");
        String str4=str3;
        str4="str";
        System.out.println("str3="+str3+",str4="+str4);
        System.out.println(str3==str4?true:false);
    }
}

运行结果

false
str3=str,str4=str
false



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

str4并未指向str3,在String str4=str3中,str3并不作为指针地址,而是字符串"str",所以str4是一个新指针指向字符串"str"。

  • _NAVL_ 提问者 #1
    在什么情况下使用类似(注意是类似)以下定义: String str3=new String("str"); String str4=str3; 的时候,改变str4的值,str3也会被修改呢?
    2019-05-08 16:46:43
  • 应是天仙狂醉 回复 提问者 _NAVL_ #2
    String是final类型的,只要其值被改变就会返回一个新的指针。所以不能同时有两个指针指向同一个地址。而其他大部分的指针则无此问题,可同时指向同一地址。望采纳。
    2019-05-08 16:55:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码