今天无易中看一个学习视频,明白了String字符串中一个小小的东西。
如:public void test(String key1,String key2){
String a=key1+key2;
String b=key1+key2;
System.out.println(a==b);
}
public static void main(String[] args){
new AccountTest().test("1", "");
}
//上边这段代码相信大家都知道结果为false,因为字符串在相加的时候是把key1+key2相加的结果放到了一个新创建的对象中。所以他们的结果为false
//但是如果
public void test(String key1,String key2){
String a="1"+"";
String b="1"+"";
System.out.println(a==b);
}
//上边这段代码相信大家都知道结果为true,为什么呢?
//因为在jvm翻译为二进制代码时,会自动优化,把两个值后边的结果先合并,再保存为一个常量。而上边那个通过参数传的值,因为jvm也不知道会传过来什么值,所以也就无法优化。