Java中==和equals的区别【杭州多测师】【杭州多测师_王sir】()

== 的作用:  基本类型:比较的就是值是否相同  引用类型:比较的就是对象的地址是否相同equals 的作用equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象地址是否相等,如果对equals方法进行重写,则比较的就是值是否相等

package com.duoceshi.thread;

public class StringTest {

    /**
     * author:杭州滨江多测师_王sir
     * @param args
     */
    public static void main(String[] args) {
        StringTest.test();  //对于==的比较
        StringTest.test1();  //对于equals的比较

    }

    public static void test(){
        /**
         * 1、基本数据类型:==比较的就是值是否相同
         */
        int num = 1;
        int num2 = 1;
        System.out.println(num == num2);  //true

        /**
         * 2、引用数据类型:==比较的就是对象的地址是否相同
         */
        StringTest stringTest1 = new StringTest();
        StringTest stringTest2 = new StringTest();
        System.out.println(stringTest1 == stringTest2); //false、2个属于不同的对象

        //字符串创建的两种创建方式
        //常量池
        String str1="hello";
        String str2="hello";
        System.out.println (str1==str2);  //true   //比较2个字符串
        String str3= new String ("hello");
        String str4= new String ("hello");
        System.out.println(str3 == str4);  //false   //重新创建的对象==》通过new的方式创建的属于不同的对象
    }

    private static void test1() {
        /**
         * equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写
         * 则比较的是引用类型的变量所指向的对象地址是否相等
         *如果对equals方法进行重写,则比较的就是值是否相等。
         */
        String name = "duoceshi";
        String name1 = "duoceshi";
        System.out.println(name.equals(name1)); //true   比较的是引用类型的变量所指向的对象地址是否相等

        String name2 = new String("duoceshi");
        String name3 = new String("duoceshi");
        System.out.println(name2.equals(name3)); //true   比较的是引用类型的变量所指向的对象地址是否相等
        System.out.println(name.equals(name2));  //true   比较的是引用类型的变量所指向的对象地址是否相等
    }


}
————————

== 的作用:  基本类型:比较的就是值是否相同  引用类型:比较的就是对象的地址是否相同equals 的作用equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象地址是否相等,如果对equals方法进行重写,则比较的就是值是否相等

package com.duoceshi.thread;

public class StringTest {

    /**
     * author:杭州滨江多测师_王sir
     * @param args
     */
    public static void main(String[] args) {
        StringTest.test();  //对于==的比较
        StringTest.test1();  //对于equals的比较

    }

    public static void test(){
        /**
         * 1、基本数据类型:==比较的就是值是否相同
         */
        int num = 1;
        int num2 = 1;
        System.out.println(num == num2);  //true

        /**
         * 2、引用数据类型:==比较的就是对象的地址是否相同
         */
        StringTest stringTest1 = new StringTest();
        StringTest stringTest2 = new StringTest();
        System.out.println(stringTest1 == stringTest2); //false、2个属于不同的对象

        //字符串创建的两种创建方式
        //常量池
        String str1="hello";
        String str2="hello";
        System.out.println (str1==str2);  //true   //比较2个字符串
        String str3= new String ("hello");
        String str4= new String ("hello");
        System.out.println(str3 == str4);  //false   //重新创建的对象==》通过new的方式创建的属于不同的对象
    }

    private static void test1() {
        /**
         * equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写
         * 则比较的是引用类型的变量所指向的对象地址是否相等
         *如果对equals方法进行重写,则比较的就是值是否相等。
         */
        String name = "duoceshi";
        String name1 = "duoceshi";
        System.out.println(name.equals(name1)); //true   比较的是引用类型的变量所指向的对象地址是否相等

        String name2 = new String("duoceshi");
        String name3 = new String("duoceshi");
        System.out.println(name2.equals(name3)); //true   比较的是引用类型的变量所指向的对象地址是否相等
        System.out.println(name.equals(name2));  //true   比较的是引用类型的变量所指向的对象地址是否相等
    }


}