Equals与==区别

public class EqualsTest {
    public static void main(String[] args) {
        String str = "string";//放入常量池中
        String str2 = "string";
        String str3 = new String("str");
        String str4 = "str";
        String str5 = new String("str");
        System.out.println(str == str2);//true
        System.out.println(str.equals(str2));//true
        System.out.println(str3 == str4);//false
        System.out.println(str3.equals(str4));//true
        System.out.println(str3 == str5); //false
        System.out.println(str3.equals(str5));//true
        
    }
}
equals和==的最大区别就是一个是方法,一个是运算符
 ==:如果比较的对象是基本数据类型;则比较的是值是否相等
     如果比较的是引用数据类型,则比较的是对象的地址值是否相等
 equals():用来比较方法两个对象的内容是否相等。
 注意:equals()方法不能用于基本数据类型的变量,如果没有对equals()方法进行重写,则比较的是引用类型变量所指向的对象的地址。
 String类型有两种内存方式:
     (1) String str = "string"; //是将变量值存放到常量池
     (2) String str2 = new String("string");//是在堆内存中
  如果再创建String str3 = "string";//这时常量池中存在变量值"string"
  将直接把"string"的引用值传给str3

猜你喜欢

转载自blog.csdn.net/fighting_mjtao/article/details/81208535
今日推荐