常量池

2020-04-26  本文已影响0人  KallyCat

在compile的时候,放东西进常量池。

对于Integer 范围在 -128 - 127

Integer a = 5;
Integer b = 5;
a == b   // true, 因为真的是一个地址

Integer a = new Integer(5);
Integer b = new Integer(5);
a == b   // false

Integer a = 128;
Integer b = 128;
a == b   // false

对于 String, 编译器在编译的时候放进了常量池

String s1 = "qwertyyy"; // 此时放进了常量池
String s2 = "qwertyyy";  // 指向了常量池那个"qwertyyy"
s1 == s2; //true 

String s1 = "qwertyyy";
String s2 = new String("qwertyyy"); // 在heap 上new 了一个
s1 == s2; // false

// 例子
String sa = "a";
String sb = "b";
String sab = "a"+"b";

sab == "a"+"b";  true
sab == sa + "b";  false // 编译器不会这么聪明往回看sa是什么
sab == sa + sb;   false
上一篇 下一篇

猜你喜欢

热点阅读