在今天看的java特种兵中,主要看了前面几小结。作者重点讲了String。总结的实例代码如下:
public class Day{
private static String getA(){
return "a";}
private static void method1(){
String a ="a"+"b"+1;
String b ="ab1";
System.out.println(a==b);//a,b均为常量,在编译时就已经确定
}
private static void method2(){
String a ="a";
final String c ="a";
String b =a+"b";
String d=c+"b";
String e=getA()+"b";
String compare ="ab";
System.out.println(b==compare);//b中a是变量,虽然初始化为"a"
System.out.println(d==compare);//d中c也是变量,但它是final的,所以会认为d是常量
System.out.println(e==compare);//e为方法 不会是常量,虽然返回的是常量,编译时不会查看方法,因为有可能返回的是变量
System.out.println(a==c);
}
private static void method3(){
String a="a";
String b=a+"b";
String c="ab";
String d = new String(b);
System.out.println(b==c);
System.out.println(c==d);
System.out.println(c==d.intern());//intern方法会在常量池里查找,所以会是相同的常量
System.out.println(b.intern()==d.intern());
}
public static void main(String[] args){
method1();
method2();
method3();
}
}
----------------------------------------------
运行结果为:
true
false
true
false
true
false
false
true
true