java之String对象的比较

来源:互联网 发布:网络扑克制作 编辑:程序博客网 时间:2024/05/16 15:52

转载请注明出处

http://blog.csdn.net/pony_maggie/article/details/46507283


作者:小马


String对象的比较与一般的对象还是有些区别的,看下面这段代码,


public static void main(String[] args) {// TODO Auto-generated method stubString s1 = "abd";String s2 = "abd";String s3 = new String("123");String s4 = new String("123");System.out.println(s1 == s2);System.out.println(s1.equals(s2));System.out.println(s3 == s4);System.out.println(s3.equals(s4));

输出结果:

truetruefalsetrue

比较两个字符串一定要用equals而不是直接用==,因为后者比较的是引用,而不实际值,这一点与普通对象是一样的,但是输出结果为什么s1和s2相等呢? 这是因为,如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true。多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象。

s3和s4是不相同的,原因是如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象。

0 0