Java 通过“Int”和“Char”进行比较==&引用;

Java 通过“Int”和“Char”进行比较==&引用;,java,char,int,comparison,Java,Char,Int,Comparison,为什么这样可以?它到底比什么 int i = 10; char c = 10; if( c == i) System.out.println("We are Equal"); 在这种情况下也是如此: String s1 = "Null"; String s2 = new String(s1); if( s1 == s2) System.out.println("We are Equal"); 我知道我们没有比较变

为什么这样可以?它到底比什么

    int i = 10; 
    char c = 10;
    if( c == i)
       System.out.println("We are Equal");
在这种情况下也是如此:

    String s1 = "Null"; 
    String s2 = new String(s1);
    if( s1 == s2)
       System.out.println("We are Equal");

我知道我们没有比较变量的内容。

字符串是对象。您正在比较字符串的引用。Char/int是原语,因此没有对象。

在第一个示例中,比较整数的两个文本值,即10==10


在第二个示例中,您正在比较字符串对象,这意味着要比较的是实际对象的值,而不是其内容。为了比较这些字符串对象的内容,即“Blah”=“Blah”,您应该使用string方法
string.compare(string strotcompare

否,第一个可以,但使用
s.equals()
用于字符串。第一部分包含在for字符串中,您需要使用
。equals
,因为Java中的字符串是对象。仅在基本数据类型上使用
=
。在第一种情况下,它是将强制转换的值char c.e比较为(int)c==i,所以它是真的,但在第二个i.e字符串中,它比较字符串的引用,即s1和s2是否都指向字符串池中的同一位置false@PrakharAsthana您的第二个案例是错误的。
s1
s2
是两个完全不同的引用,使用
=
您正在比较引用,而ich将返回
false
。它们不指向字符串池中的同一位置。