首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

:JAVA编程思想的一道习题

2011-12-29 
求助:JAVA编程思想的一道习题2版第3章中有道习题(第6题)感觉太难了,所以看了答案:答案是:publicclassE06_C

求助: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);


//! 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 ");
}
}


楼主这个意思吧
[解决办法]
大部分类的equals方法实际就是调用==的结果,但是一些基本类比如String 类做了一些调整,
他的equals方法比较的是两个String对象的内容!
==的意思是 两个引用完全相同,他们指向了同一个对象
[解决办法]
牛人呵呵

问的问题弱弱呵呵

不过没有关系

没有什么高手部高手的

手熟而已楼主多多努力呵呵

热点排行
Bad Request.