== 与 equals的区别
2016-08-18 22:40
253 查看
==与equals都是比较两个变量得到true或false。
在进行比较时,先说说内存,内存分为堆和栈。基本数据类型中,是把值存在栈中,把值传递给变量,这种传递叫值传递。引用数据类型中,是在栈中存地址,堆中存的new的对象,给变量赋值传递时,传的是地址,这种传递叫引用传递。
基本数据类型:
int a = 1; int b = 1; int c = new Integer(1); int d = new Integer(1);
a == b; a == c; c == d;
因为这几个变量都是基本数据类型,所以用"=="比较,都会得到true。
引用数据类型:
String a = "a"; String b = "a"; String c = new String("a"); String d = new String("a");
a == b; a == c; c == d;
a.equals(b); a.equals(c); c.equals(d);
因为这几个变量都是引用数据类型,如果用"==",比较的是这几个变量存在栈中的地址,不同的变量,栈中的地址永远是不同的,所以"=="都会得到false;而equals比较的是变量存在堆中的值,所以equals都会得到true。
在进行比较时,先说说内存,内存分为堆和栈。基本数据类型中,是把值存在栈中,把值传递给变量,这种传递叫值传递。引用数据类型中,是在栈中存地址,堆中存的new的对象,给变量赋值传递时,传的是地址,这种传递叫引用传递。
基本数据类型:
int a = 1; int b = 1; int c = new Integer(1); int d = new Integer(1);
a == b; a == c; c == d;
因为这几个变量都是基本数据类型,所以用"=="比较,都会得到true。
引用数据类型:
String a = "a"; String b = "a"; String c = new String("a"); String d = new String("a");
a == b; a == c; c == d;
a.equals(b); a.equals(c); c.equals(d);
因为这几个变量都是引用数据类型,如果用"==",比较的是这几个变量存在栈中的地址,不同的变量,栈中的地址永远是不同的,所以"=="都会得到false;而equals比较的是变量存在堆中的值,所以equals都会得到true。
相关文章推荐
- == 与 equals() 的区别
- ==和equals的应用区别
- 07.(java基础)面试题04 ==,equals区别
- == 和 equals()的区别
- ==和equals的区别
- == 和equals() 的区别
- ==和equals究竟有什么区别
- ==、equals、hashcode的区别和联系
- == 与equals 的区别
- ==和equals的区别
- ==和equals区别
- ==与equals()区别
- ==与equals 的区别
- ==和equals的区别
- ==与equals()区别
- ==和equals的区别
- == 与equals()的区别
- == 与 equals的区别
- ==和equals方法及其区别
- ==和equals的区别