您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第二季学习笔记-String类编译期与运行期分析
发布时间:2017-07-10 13:54:46编辑:雪饮阅读()
public class NewKeywordDemo
{
public static void main(String[] args){
//情况一
String a="a1";
String a1="a"+1;
System.out.println(a==a1);
//情况二
String b="b1";
int bb=1;
String b1="b"+bb;
System.out.println(b==b1);
//情况三
String c="c1";
final int cc=1;
String c1="c"+cc;
System.out.println(c==c1);
//情况四
String d="d1";
final int dd=getDD();
String d1="d"+dd;
System.out.println(d==d1);
}
public static int getDD(){return 1;}
}
四种情况分别是true,false,true,false
情况一分析:在编译期由于a和a1的值都是常量都是可以确定的。所以在运行期比对a和a1的值是相同。
情况二分析:
由于b1变量值中包含另外一个变量,所以导致编译期b1值的不确定性,就无法向字符串常量池添加引用地址。所以这里在运行期间来对比也就会导致值的不同。
情况三分析:
c1变量的表达式中虽然包含cc,但cc是常量,在编译期是可以确定的,所以最后比对值也是相同的。
情况四分析:
虽然变量dd前也使用了final进行修饰,但是变量dd的值本身是通过一个静态方法的返回值进行初始化的,方法的执行是在运行期,所以结果为两个对象不是同一个对象。
关键字词:javase,String,编译期,运行期