一、上代码
例子
public static void main(String[] args) {
Short a = new Short("10000");
Short b = new Short("10000");
out.println("new Short : " + (a == b));
out.println("new Short : " + a.equals(b));
Short c = 10000;
Short d = 10000;
out.println("Short : " + (c == d));
out.println("Short : " + c.equals(d));
Short e = Short.valueOf("10000");
Short f = Short.valueOf("10000");
out.println("Short.valueOf : " + (e == f));
out.println("Short.valueOf : " + e.equals(f));
short g = 10000;
short h = 10000;
out.println("short : " + (g == h));
}
结果
二、结论
1.==:比较的是内存地址;
2..equals():jvm中的值;
3.使用 == 比较对象会得到不靠谱的结果,当使用Short缓存中的数字的时候结果会是true,否则就像比较10000一样返回false;
4.Short拆包后会放入缓存,即short类型,此时只能使用 == 号去比较,且是相等的;