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
原创粉丝点击