对象用equals方法阿
如:b1.equals(b2)
如:b1.equals(b2)
解决方案 »
- 重载问题
- 新手,陷入学习瓶颈了
- 大数阶乘运行结果不正确
- 一道java题,如何用已给的算法用“*”画一个抛物线(有图)
- 如何用SESSION函数实现将数据插入不同的数据库
- java or oracle 技术群
- 自订一个程序库,但编译出错,请大家指点一下!
- 各位:我用JB开发应用程序时,将窗体的layout属性设置为XYLayout类型(因为只有这样,才能方便的布局控件),我打包成.jar,怎么会说找不到
- 请问:在sql里面如何实现时间的大于等于的查询?
- Java 如何进行性能分析?有工具吗
- tomcat 出现找不到文件 -Djava.endorse.dirs= 求救
- 急!急!急!大虾们来帮忙啊!编译生成新的.class文件后..........
谢谢其他几位。我明白:s1和s2的引用不同,所以s1==s2返回false.问题就在为什么引用不同啊?
说得对,就是内存堆与堆栈的问题,
用==是对堆栈的比较 对象的名字和所有原始类型都放到堆栈中
而equals是对内存堆的比较 对象本身是放在内存堆中的
001 //s1所指向的对象。
002 //“a”所创建的对象。因为002的对象显式创建的(也就是通过“内容”这样的方式new出来的。),所以002的对象会被放进一个池。这个池是所有显式创建的String对象共享的。所以在s2 = "a";
的时候,s2指向了002的对象。
并指向内存堆中的"a"。 //对象本身是放在内存堆中的用==是对堆栈的比较,而equals是对内存堆的比较,当然是返回false了
系统分配空间是,认为这是两个不同的常量。
字符串要做值的比较,可以用equals方法。字符串类本身就是常量类,创建以后就不能改变其值(但是可以引用值可以改变,使其指向新的字符串)。