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 比较的是引用类型的变量所指向的对象地址是否相等 } }