不理解一段代码,找人看下
public   class   Test 
 { 
 	public   static   void   main(String   args[]) 
 	{ 
 		String   s0   =    "Hello "; 
 		String   s1   =    "Hello "; 
 		String   s2   =    "Hell "   +    "o "; 
 		String   s3   =   new   String( "Hello "); 
 		String   s4   =   new   String( "Hello "); 
 		System.out.println(s0   ==   s1);   		//true 
 		System.out.println(s1   ==   s2);   		//true 
 		System.out.println(s1   ==   s3);		//false 
 		System.out.println(s3   ==   s4);		//false 
 		System.out.println(s3.equals(s4));	//true 
 		System.out.println(s2.equals(s3));	//true 
 	} 
 }   
 刚学java,有些东西不理解。上面这段代码中s3、s4不是指向同一个对象,s0、s1为什么指向同一个对象?String   s0   =    "Hello ";和String   s3   =   new   String( "Hello ");不是等同的吗?请教大家这两句有什么区别。
------解决方案--------------------是这样的S0 是把数据放在缓冲池中间 ,S3 是在动态分配区重新申请一块内存 
 String s0 =  "Hello " 是先在缓冲池中找有没有相同的数据有的话直接把s0映射到这个地址 
 String s3 = new String( "Hello "); 是在内存中申请一个新的区域 把 "Hello "写进去,再把这个区域的首地址给s3,所以地址会不同