可能重复:
整数包装器对象仅在值127内共享相同的实例?
我从Khalid Mughal SCJP复制了以下程序片段,但我无法
理解输出.
public class RQ200_60 {
public static void main(String[] args) {
Integer i = -10;
Integer j = -10;
System.out.print(i==j); // output: true -- why true?
System.out.print(i.equals(j)); // output: true
Integer n = 128;
Integer m = 128;
System.out.print(n==m); // output: false
System.out.print(n.equals(m)); // output: true
}
}
Run Code Online (Sandbox Code Playgroud)
上面的程序为第一个print语句提供了true,但它应该给出false,因为它是与==关系运算符的引用比较.但第三次打印给出了错误,我不明白这种不一致.
非常感谢您的解释!
我对Efective Java这本书有所怀疑.怀疑是关于equals方法
反身规则违反.这本书说如下:
" 如果你违反了它,然后将你的类的一个实例添加到一个集合中,那么集合的contains方法肯定会说该集合不包含你刚刚添加的实例. "
为了测试它,我写了一个示例类,但contains方法没有返回false它返回true.谁能说出问题是什么?
我的问题是,如果实习生正在使用字符串和字符串有一个SPC(字符串池常量)为它和实习生概念也使用整数,所以是否有任何整数池常量?如果不是那么它的工作原理?
class InternExample
{
public void print()
{
Integer i=10;
Integer j=10;
String c="a";
String s="a";
System.out.println(i==j);// prints true
System.out.println(c==s);//prints true
}
public static void main(String args[])
{
new InternExample().print();
}
}
Run Code Online (Sandbox Code Playgroud) import static java.lang.System.out;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class ShadowingByImporting
{
public static void main(String[] args)throws FileNotFoundException
{
out.println("Calling println() in java.lang.System.out");
PrintWriter pw=new PrintWriter("log.txt");
writeInfo(pw);
pw.flush();
pw.close();
}
public static void writeInfo(PrintWriter out)
{
out.println("Calling pritnln() in the parameter out");
System.out.println("Calling println() in java.lang.System.out Example");
}
}
Run Code Online (Sandbox Code Playgroud)
上面的程序是在Khalid Mugal的SCJP指南中给出的,根据他的静态导入中的阴影原理写入writeInfo中的第二个println方法.方法将执行两次,但是当我运行以下不同的输出时.
请有人解释一下实际的概念是什么.
Calling println() in java.lang.System.out
Calling println() in java.lang.System.out Example
Run Code Online (Sandbox Code Playgroud)