String类编译器与运行期分析

开始认真学习JAVA,做下笔记第一天 

class StringDemo1 

{
public static void main(String[] args) 
{
//情况一
String a = "a1";
String a1 = "a"+1;

System.out.println(a==a1);  //true 原因a对象在字符串常量池中创建了一个a1,而a1对象因为字符串a和1是常量,所以在编译时就已经确定了是a1。



//情况二
String b = "b1";
int bb = 1;
String b1 = "b"+bb;
System.out.println(b==b1); //false  原因b 对象在字符串常量池中创建了一个b 1,而b 对象因为bb是个变量所以不能确定,是false。


//情况三
String c = "c1";
final int cc = 1;
String c1 = "c"+cc;
System.out.println(c==c1); // true  原因是c 对象在字符串常量池中创建了一个c 1,而cc 对象因为cc前面加了个final所以把cc变成了常量所以c1能确定了。


//情况死
String d = "d1";
final int dd = getDD();
String d1 = "d"+dd;
System.out.println(d==d1);//false  原因是 d对象在字符串常量池中创建了一个d1,而dd变量因为需要通过getDD这个方法才能获取值,这个geiDD的方法说明时候才能 //确定值呢,要等你编译的时候才能确定值。
}
public static int getDD(){
return 1;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值