==和equals方法究竟有什么区别?

==和equals方法究竟有什么区别?

==:在基本数据类型中判断值是否相等,在引用类型中判断堆中的对象是否相等
equals:将该字符串与指定的对象进行比较。当实参的值与此对象的值相同时,结果为真。

案例一
        //两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象
        String str1 = new String("lldwb");
        String str2 = new String("lldwb");
        //判断是否指向同一个对象
        System.out.println(str1==str2);
        //判断两个对象中的内容是否相同
        System.out.println(str1.equals(str2));
        //记住,字符串的比较基本上都是使用equals方法。

简单一点:
在String对比中:==指向的地址是否相等,equals一个一个字节对比是否相等
file

题目一
public class Ch{
    Person person1 = new Person();
    person1.name = "str";
    Person person2 = new Person();
    person2.name = "str";
    System.out.println(person1.name==person2.name);
}
class Person{
    String name;
}

输出的是true/false?
答案是true
str1==str2,指向的是堆中的对象
person1.name==person2.name,堆中对象的属性name指向字符串常量池的地址