(1)==是一个运算符,用于比较两个值是否相等
==用于基本数据类型的变量时,比较的是存储的两个变量值是否相等。
==用于引用类型的变量时,比较的是引用的地址是否相同,即变量所指向的对象的地址是否相等。
(2)equals()是Object类的方法,Object类是所有类的父类。
而基本数据类型不属于类,因此基本数据类型不能使用equals()方法。
当equals没有重写的时候,它的作用与==是相同的,都是比较引用的地址是否相同。不过Java中大部分的类都重写了equals方法,重写之后的equals方法则是用于比较两个对象的值是否相等。
String str =new String("Hello");// str存在于堆区 String str1 = "Hello"; //str1的引用存在于栈区,其值存在于常量池 String str2 = "Helloworld"; String str3 ="world"; String str4 = str1+str3; String str5 ="Hello"+"world"; System.out.println(str==str1);//false 引用的地址不同 System.out.println(str2==str4);//false字符串使用+进行拼接其实是StringBuilder底部调用append方法将str1和str3进行拼接, // 然后通过toString方法转换成字符串,并将结果返回给新的字符串str4 System.out.println(str2==str5);//true 常量池中已经存在Hello字符串和World字符串 进行拼接时不需要再创建新的对象 System.out.println(str2.equals(str4));//true