"=="和equals方法的区别
2010-08-04 21:35
351 查看
1、
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
2、
public static void main(String[] args)
{
String ss=new String("gdd");
String dd=new String("gdd");
System.out.println(ss.equals(dd));
System.out.println(ss==dd);
}
结果:
true
false
参考:
JDK源码分析:java.lang.String
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
2、
public static void main(String[] args)
{
String ss=new String("gdd");
String dd=new String("gdd");
System.out.println(ss.equals(dd));
System.out.println(ss==dd);
}
结果:
true
false
参考:
JDK源码分析:java.lang.String
Java String对象的经典问题(new String())
相关文章推荐
- "=="和equals方法有什么区别?
- "=="和equals方法究竟有什么区别
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法的区别
- "=="和equals方法有什么区别
- "=="和equals方法的区别
- "=="和equals方法究竟有什么区别
- "=="和equals方法有什么区别
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟有什么区别?
- "=="和equals方法究竟的区别?
- "=="和equals方法究竟有什么区别
- "=="和equals方法究竟的区别?
- "=="和equals方法究竟有什么区别?
- js中的"=="和equals()以及is()三者的区别
- Java中"=="与equals()方法的区别