求助:JAVA编程思想的一道习题
2版第3章中有道习题(第6题) 
       感觉太难了,所以看了答案: 
       答案是: 
       public   class   E06_CompareStrings   { 
       public   static   void   p(String   s,   boolean   b)   { 
             System.out.println(s   +    ":    "   +   b); 
       } 
       public   static   void 
       compare(String   lval,   String   rval)   { 
             //!   p( "lval    <   rval:    "   +   lval    <   rval); 
             //!   p( "lval   >    rval:    "   +   lval   >    rval); 
             //!   p( "lval    <=   rval:    "   +   lval    <=   rval); 
             //!   p( "lval   > =   rval:    "   +   lval   > =   rval); 
             p( "lval   ==   rval ",   lval   ==   rval); 
             p( "lval   !=   rval ",   lval   !=   rval); 
             p( "lval.equals(rval) ",   lval.equals(rval)); 
       } 
       public   static   void   main(String[]   args)   { 
             compare( "Hello ",    "Hello "); 
             String   s   =   new   String( "Hello "); 
             compare( "Hello ",   s); 
             compare( "Hello ",    "Goodbye "); 
       } 
 }    
       感觉答案是挺正确的 
       但是运行的时候,为什么函数compare的变量初始化就不行了呢? 
       请各位大虾帮助,小弟感激不尽 
------解决方案--------------------==比较的是内存地址; 
 equals比较的是内容。   
 用new创建对象时,都会 新 分配一个内存地址,所以就不等了。   
 用=创建String对象时,是去内存里寻找,看有没有对应的内容,有就指向那里,所以相等。   
------解决方案--------------------我是初学java,但是我觉得程序执行得没有问题呀?
------解决方案--------------------compare( "hello ", "hello ")的输出应该是lval == rval:true,比较的是 "hello "和 "hello " 
------解决方案--------------------yeah920的解释正确,==比的是两个字符串的内存地址 equals比的是字符串内存地址上保存的值
------解决方案--------------------hhx420() ( ) 信誉:100    Blog  
 compare( "hello ", "hello ")的输出应该是lval == rval:true,比较的是 "hello "和 "hello "   
 ------------------------------------ 
 == 和 equals 本来是一样的,比较的引用和值!但是一些基本类重写了equals方法,比如String,这样String比较的就是对象的值了,但==比较的仍然是引用!   
 compare( "hello ", "hello ")的输出应该是lval == rval:true 这里有点不太明白,在函数p里是定义了2个引用来接受传过去的值的
------解决方案--------------------public class E06_CompareStrings { 
     public static void p(String s, boolean b) { 
       System.out.println(s +  ":  " + b); 
     } 
     public static void 
     compare(String lval, String rval) { 
       //! p( "lval  < rval:  " + lval  < rval); 
       //! p( "lval >  rval:  " + lval >  rval); 
       //! p( "lval  <= rval:  " + lval  <= rval);