java中String类
如果为一个String的变量赋值一个直接量,那么这个直接量就会放入常量池里面。也就是说在编译的时候能确定的字符串都会放入常量池里面。
package frank;
public class App
{
public static void main(String[] args)
{
String s = "123";//放入常量池
System.out.println(s.hashCode());
String s2 = "1"+"2"+"3";//如果常量池里面存在就会指向那个对象
System.out.println(s2.hashCode());
String s3 = "1";
String s5 = "23";
String s4 = s3+ s5;//在编译的时候不能确定值
String s6 = s3 + "23";//在在编译的时候不能确定值
System.out.println(s4.hashCode());
System.out.println(s == s4);//false
System.out.println(s == s2);//true
System.out.println(s == s6);//false
}
}
当为String类型的变量直接赋值一个常量的时候,首先会去常量池里面找,如果发现有当前要赋值的值,就会直接指向之前的值,如果没有就会把新值放入常量池中。
浙公网安备 33010602011771号