核心Java(与字符串类相关)

核心Java(与字符串类相关),java,Java,在该程序中,所有System.out.println;提供真正的价值。有人能简要解释一下吗 public class Lab { public static void main(String args[]) { Stud st = new Stud("Vj"); Emp em = new Emp("Vj"); System.out.println(st.snm == em.enm);//How this Statement gives t

在该程序中,所有System.out.println;提供真正的价值。有人能简要解释一下吗

public class Lab {

    public static void main(String args[]) {
        Stud st = new Stud("Vj");
        Emp em = new Emp("Vj");
        System.out.println(st.snm == em.enm);//How this Statement gives true
        st.show(em);
    }
}

class Stud {
    String snm;
    Stud(String snm) {
        this.snm = snm;
    }
    void show(Emp em) {
        String msg = "Vj";
        System.out.println(em.enm == msg);
        System.out.println(em.enm == snm);
        em.display(this);
    }
}

class Emp {
    String enm;
    Emp(String enm) {
        this.enm = enm;
    }
    void display(Stud st) {
        String
        var = "Vj";
        System.out.println(st.snm == var);
        System.out.println(st.snm == enm);
    }
}

通过定义和分配字符串文字,您可以从字符串池中存储/检索字符串

所以当你这样做的时候:

 String str1 = "abc";
 String str2 = "abc";
 System.out.println(str1 == str2);//will return true
它将返回true,因为两个文本相等

==在两个引用类型上是引用标识比较。两个相等的对象不一定等于。在引用类型上使用==通常是错误的;大多数情况下,需要使用equals:

str1.equals(str2)

请编辑您的文章格式的源代码是可读的我刚刚做了@Ujjawal Singh,请注意您的问题的正确格式。这对于良好的可读性很重要。可能重复,你读过这个答案吗@Shrikant Havale我检查了那个链接..它不是重复的…我有什么疑问…再次解释了。@SMA..谢谢…我再次解释了我的问题..我有什么疑问..请澄清..Stud类有一个引用变量字符串snm和Emp类有一个引用变量字符串enm,在main方法中,我创建了Stud类对象st,并在costructor中传递vj,这与我在Emp类中创建的对象为em时所做的相同。现在我想比较st.snm==em.enm,它给出了真实的值……请用brif解释@UjjawalSingh他做了简短的解释。请试着理解它。另请查看注释中的链接。@Ujjawal Singh:true值表示两个值相同,这就是==运算符的用途。