java == 和 equals 方法
来源:互联网 发布:六神磊磊读金庸 知乎 编辑:程序博客网 时间:2024/06/05 00:30
注:摘抄自疯狂java
当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量的值相等,就将返回true。
但对于两个引用类型变量,它们必须指向同一个对象,==判断才会返回true。==不可用于比较类型上没有父子关系的两个对象。
实例:
int it = 65;float f1 = 65.0f;system.out.println(it==fl);//输出truechar ch = 'A';system.out.println(it==ch);//输出trueString str1 = new String("hello");String str2 = new String("hello");system.out.println(str1 == str2);//输出falsesystem.out.println(str1.equals(str2));//输出truesystem.out.println("hello" == new EqualTest());//输出编译错误
Integer a = new Integer(3);Integer b = 3;int c = 3;int d = new Integer("3");System.out.println(a == b);//falseSystem.out.println(a == c);//trueSystem.out.println(a == d);//trueSystem.out.println(b == c);//trueSystem.out.println(b == d);//trueSystem.out.println(c == d);//true
常量池:
专门用于管理在编译期就被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量。
String s1 = "疯狂java";String s2 = "疯狂";String s3 = "java";String s4 = "疯狂" + "java";String s5 = "疯" + "狂" + "java";String s6 = s2 + s3;String s7 = new String("疯狂java");System.out.println(s1 == s4);//输出trueSystem.out.println(s1 == s5);//输出trueSystem.out.println(s1 == s6);//输出false,如果s2和s3用final修饰(宏变量),则输出为true。System.out.println(s1 == s7);//输出false
final定义的宏变量:
final int a = 5+2;fianl double b = 1.2 / 3;final String str = "疯狂" + "java";final String book = "疯狂java讲义:" + 99.0;//下面的book2变量的值因为调用了方法,所以无法在编译时被确定下来final String book2 = "疯狂java讲义:" + String.valueOf(99.0);system.out.println(book == "疯狂java讲义:99.0");//输出truesystem.out.println(book2 == "疯狂java讲义:99.0");//输出false
=======自动装箱的陷阱=========
public class Test1 { public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3l; System.out.println(c == d); System.out.println(e == f); System.out.println(c == (a+b)); System.out.println(c.equals(a+b)); System.out.println(g == (a+ b)); System.out.println(g.equals(a + b));// true// false// true// true// true// false }}
0 0
- java hashCode()方法equals()和==
- Java:的“==”和equals方法
- Java 中的== 和equals()方法
- Java中“==”和equals方法
- java 区别“==”和equals()方法
- Java中==和equals方法
- Java中"=="和equals方法
- Java 中的== 和equals()方法
- java == 和 equals 方法
- Java中的==和equals方法
- Java中的==和equals方法
- ==和equals方法
- ==和equals方法
- equals和==方法
- ==和equals方法
- java中equals方法和“==”的比较
- java 中 == 和 equals()方法的 比较
- java中equals方法和“==”的区别
- 如何在Java中使用双重检查锁实现单例
- 【C#错误】未能添加对“LoginBLL”的引用,将此项目作为引用添加将导致循环依赖项
- 动态规划:最低通行费
- 商品展示案例(SQLite数据库存储和ListView的使用)
- (15)caffe总结之自定义Layer的实现
- java == 和 equals 方法
- 程序员面试经典--二叉查找树节点的“下一个结点”
- switchbutton的用法
- 删除倒数第n个节点
- javaScript 代码笔记
- 删除倒数第n个节点
- c/c++进阶之爱恨交织的临时对象:三、诡异的性质
- 返回键的那张图 代码
- Android sqlite数据库