java中的String类常量池详解
从一个博客上看到的6个题,先看看吧,如果都会了,这部分的知识就掌握的不错啦!输出结果在代码注释后面:
test1:
package StringTest;
public class test1 {
/**
* ***@param args
*/
public static void main(String[] args){
String a = "a1";
String b = "a"+ 1;
(a==b);
}//true
}
test2:
package StringTest;
public class test2 {
/**
* ***@param args
*/
public static void main(String[] args){
String a = "ab";
String bb = "b";
String b = "a"+ bb; //编译器不能确定为常量
(a==b);
}//false
}
test3:
package StringTest;
public class test3 {
/**
* ***@param args
*/
public static void main(String[] args){
String a = "ab";
final String bb = "b";
String b = "a"+ bb; //bb加final后是常量,可以在编译器确定b
(a==b);
}//true
}
test4:
package StringTest;
public class test4 {
/**
* ***@param args
*/
public static void main(String[] args){
String a = "ab";
final String bb = getBB();
String b = "a"+ bb;//bb是通过函数返回的,虽然知道它是final的,但不知道具体是啥,要到运行期才知道bb的值
(a==b);
}//false
private static String getBB(){ return "b"; }
}
test5:
package StringTest;
public class test5 {
/**
* ***@param args
*/
private static String a = "ab";
public static void main(String[] args){
String s1 = "a";
String s2 = "b";
String s = s1 + s2;//+的用法
(s == a);
(() == a);//intern的含义
}//flase true
String常量池详解 来自淘豆网m.daumloan.com转载请标明出处.