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类型的变量直接赋值一个常量的时候,首先会去常量池里面找,如果发现有当前要赋值的值,就会直接指向之前的值,如果没有就会把新值放入常量池中。

posted on 2013-08-05 11:10  wp456  阅读(231)  评论(0)    收藏  举报

导航