您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 字面值 >

java中string相等问题(==与equal的具体区别。求详细解释)

发布时间:2019-07-27 04:40 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  (2)在栈中查找有没有存放值为accp的地址,如果没有,则开辟一个存放字面值为accp的地址,接着创建一个新的String类的对象o,并将o 的字符串值指向这个地址,而且在栈中这个地址旁边记下这个引用的对象o。如果已经有了值为accp的地址,则查找对象o,并返回o的地址。所以当栈中存在你想创建的变量的值的时候,其实是引用已经存在栈中的地址,不是新建的。

  而 String s3=new String(s1);是创建一个对象,也就是穿件了新的引用地址,所以s3的引用地址是新创建的,当然和s1的引用地址不同。所以s1==s3为false.

  Java编译器认为String对象是不变的,所以所有这样直接写出来accp的常量,都编译为同一个实例(不变才能这么干,如果是能变的对象这么编译的线,就不对了),这就是为什么s1==s2,但是s3是new出来的实例,一定是另一个实例,当然不会s1==s3。

http://halsoankan.com/zimianzhi/415.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有