Java — equals和==的区别
2015-07-20 12:14
99 查看
好多人搞不清equals和==的区别,今天我来浅谈一下,如有误请批评指正。
我们常常简单理解为==运算符用来比较两个基本数据类型的数值是否相同,而equals()方法用来比较两个对象是否相同。
这样的理解也可以,但我们还是要看看更深层次的含义,那样会更加清晰
1,.对于基本数据类型,byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。
int x=1;
int y=1;
System.out.println(x==y);//true
2,主要区别是:==常用于比较原生类型,而equals()方法用于检查对象的相等性。另一个不同的点是:如果==和equals()用于比较对象,当两个引用地址相同,==返回true。而equals()可以返回true或者false主要取决于重写实现。
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a==b); //返回为false,比较两个对象地址
这是因为==比较的是两个引用时是不是指向同一个内存地址,而equeals比较的是字面值。上面的new就产生了两个不同的对象,那么其内存地址肯定也就不同了
4000
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a.equals(b)); //返回为true ,比较对象具体内容
总结:
1,使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。
2,==返回true如果两个引用指向相同的对象,equals()的返回结果依赖于具体业务实现
3,字符串的对比使用equals()代替==操作符
我们常常简单理解为==运算符用来比较两个基本数据类型的数值是否相同,而equals()方法用来比较两个对象是否相同。
这样的理解也可以,但我们还是要看看更深层次的含义,那样会更加清晰
1,.对于基本数据类型,byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。
int x=1;
int y=1;
System.out.println(x==y);//true
2,主要区别是:==常用于比较原生类型,而equals()方法用于检查对象的相等性。另一个不同的点是:如果==和equals()用于比较对象,当两个引用地址相同,==返回true。而equals()可以返回true或者false主要取决于重写实现。
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a==b); //返回为false,比较两个对象地址
这是因为==比较的是两个引用时是不是指向同一个内存地址,而equeals比较的是字面值。上面的new就产生了两个不同的对象,那么其内存地址肯定也就不同了
4000
String a = new String("Hello world");
String b = new String("Hello world");
System.out.println(a.equals(b)); //返回为true ,比较对象具体内容
总结:
1,使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。
2,==返回true如果两个引用指向相同的对象,equals()的返回结果依赖于具体业务实现
3,字符串的对比使用equals()代替==操作符
相关文章推荐
- Java中的反射机制
- java中Debug调试功能简单使用
- 最佳新秀SSH(十三)——Spring集装箱IOC分析和简单的实现
- 深入浅出 Java Concurrency (13): 锁机制 part 8 读写锁 (ReentrantReadWriteLock) (1)
- 【Java基础第二弹】Java序列化进阶篇
- day05--Java基础知识--Exception异常
- Java线程之守护线程(Daemon)用法实例
- Java数组的扩容
- JAVA的包
- Java的日期格式化常用方法
- java日期格式化
- 使用Java中的for循环来实现九九乘法表
- Java中printStackTrace()、toString()、getMessage()的区别
- Solaris 安装JDK
- Java框架1
- spring注释大全
- Java的注释说明
- Java 中Thread用法
- 统计java方法(函数)的代码行数
- java 反射 reflect