== 与 equals的区别

来源:互联网 发布:matlab向量组成矩阵 编辑:程序博客网 时间:2024/06/14 15:01

        ==与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。

0 0
原创粉丝点击