当前位置:  技术问答>java相关

还没有入门 在线等待???

    来源: 互联网  发布时间:2015-09-19

    本文导语:  1。 public class Equivalence {   public static void main(String[] args) {     Integer n1 = new Integer(47);     Integer n2 = new Integer(47);     System.out.println(n1 == n2);     } } 2。 class Value {   int i; } public class EqualsMethod...

1。
public class Equivalence {
  public static void main(String[] args) {
    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.println(n1 == n2);
    }
}

2。
class Value {
  int i;
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
  }


1中,结果为  false 
2中结果为false
为什么???


|
THINKING IN JAVA 里解释的很清楚啦。

第一是新建了两个INT对象。使用的是封装器,==比较的是对象句柄。两个对象即使值一样,但却是两个独立对象。自然输出false。

第二仍然是两个不同对象,equals比较的是对象的实际内容。所以尽管进行了赋值操作 ,但实际上V1,V2的对象内容还是不同的。只是V1.i与v2.i的内容相同而已。你打印出来就知道了。
System.out.println(V1)
System.out.println(V2)
System.out.println(V1.i)
System.out.println(V2.i)






|
如果是基本数据类型(primary data type),如int,boolean,long等,使用==作为比较操作符是可以的,这和c/c++类似

对于类的对象,用==比较的是两个对象名是否是代表着同一个object。有点c/c++中比较对象指针/句柄的感觉。

1中,n1、n2代表的是两个不同的Integer对象,自然是false
2中,我觉得应该是true啊。

|
倒,没看清,那个Value类没有重载equals函数啊,不是true不是true,脸红。

|
System.out.println(n1 == n2);
比的是n1,n2对象的地址
应该用n1.equals(n2)

第二个问题,Java是但根继承结构,所有的非primitive类,都extends于Object,反编译你的类Value,你就知道了。所以Value就继承了Object的equals方法,但是这个方法还没有被你重载,这是 JDK 源代码 Object 的equals实现如下:
 public boolean equals(Object obj) {
return (this == obj);
    }
父类Object还不能很清楚你要如何比较,所以,他只判断地址是否相同
所以你要自己重载Value类的equals方法
试试下面的代码,就搞定了

class Value {
  int i;
   public boolean equals(Object obj) {
return (this.i == ((Value)obj).i);
    }
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
  }



|
chenyuan_tongji(codeguru) 不用脸红,我那次看错了,才没面子呢

哈哈哈

    
 
 

您可能感兴趣的文章:

  • 请问各位大侠:有没有《linux下QT编程入门》这本书的完全版?
  • 急!急!急!急!急!如何在Linux下编译运行C++程序。有没有这方便的入门文章或教材,
  • 有没有linux系统基本命令和系统配置还有shell编程入门的书?
  • 请问有没有基于Linux手机操作系统上的开发入门级好书,烦劳大伙推荐一下!
  • 小弟早就想一窥Linux的奥秘,但苦于没有好的入门书,烦请大虾们介绍一些书,电子教程,好的网站及论坛
  • 想找本LINUX的好的入门书籍,不知道有没有公认的比较好的,谢谢!
  • Help me,关于JDBC的简单问题(别笑我傻实在是还没有入门)nhbird也关注关注吧!
  • 刚开始LINUX,想入门并行计算,请前辈们给指指路。。。。。俺都是很守信用的,只是没有更多的分了。。
  • 朋友们刚开始工作的时候,有没有上级让你读程序啊?可不可让我们这些刚入门的人以分享一下你的经验呢?谢谢了!!
  • 有没有子进程等待父进程这一说?
  • 我在Linux上没有找到gcc,等待指点……
  • 请问有没有好一点的PDF文件查看软件?(在线等待,立即给分!50分!)
  • 添加用户组群出错 还没有搞定(在线等待)!
  • 如何使没有中文支持的Redhat7.3能显示中文?在线等待,急用
  • Jdk+tomcat中编译后的class文件应放哪儿,web-inf下怎么没有class目录,急,在线等待!
  • 在线等待-(100分)我已经下载了5cd的linux文件到硬盘上,现在如何安装呢,我没有刻录机
  • (紧急求救在线等待解决就给分)我在JBuilder下的实体ejb中建立发现器或选择器编译的时候总是报告EJBQL不能处理可是EJBQL似乎没有错(按
  • linux中有没有类似atoi的将字符转化为整形的函数?在线等待!有效马上给分!如果有头文件是什么?
  • 为什么在Win2k server里面没有CLASSPATH环境变量也能编译?在线等待,一定给分
  • 如何在没有光驱和软驱的机器上安装Linux?在线等待!!100分送上!!!
  • 我没有玩过linux,但现在有一个bat文件需要转换为sh文件,恳请各位高手帮忙!(在线等待)
  • 十万火急,在线等待(1000分(没有一次给1000分的权利,我会追加的)-----急征公司邮件问题)
  • linux密码忘了~~有没有办法?~~~在线等待~~~
  • 有没有一个类是验证一个字符串是否为数值的类啊?(再线等待,答对就结帖给分)
  • linux内核态下有没有类似于用户态下scanf()这种等待输入的语句?
  • JSP中没有任何错误,但出现下面的异常可能是程序哪一块出现了问题?(在线等待)
  • 为什么我的输出在超出ie浏览器的宽度的时候就出错!下面的情况在仅仅输出4想的时候没有问题!大虾等待你的指点
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 写了一个在线中国象棋。只是没有服务器
  • 大家有没有做过类似在线应聘这样的jsp?
  • 妈的,火了,100分,unixware7启动时为什么没有boot:?怎么改?在线等
  • solaris下有没有类似linux的Xwindow??(在线等,谢谢!!)
  • 求助:linux下有没有方法来恢复未知权限的文件的权限呢,在线等
  • mm急切!在线给分!我的rm -rf命令没有反应?
  • Tomcat4.03启动后,没有报错,但http://localhost:8080/不能正常工作,为什么?(在线关注)
  • 有没有人可以帮我(在线)
  • 在线送分!非常急切,如何用键盘启动终端,没有鼠标!
  • 急!在线等linux和unix有什么区别没有
  • 小弟装了一上午的red hat7.3也没有成功,谁能帮我?在线等!
  • 有没有高手知道linux系统定制(最小化定制)的?(在线守候)请您提供一点相关资料,谢谢!
  • SuSELinux11有没有日志可以查看到本机用SSH连接其他服务器的记录? --在线等
  • 急急 solaris 系统被自己的进程调用太多堵死了,其它系统进程也运行不了,有没有什么好的办法啊?在线等!!!!
  • XML最基础的:值中有“"”双引号该如何替代。有没有不用“"”的办法。在线等,知道的散20分。马上结贴。
  • 有没有模拟多人在线的软件?我想测试多人同时连接时的系统情况。
  • 我最近安装了ln8.0但没有装Xwindows,能告诉我怎么继续把它安装上吗?在线等!
  • 有没有用类的变量?(在线,解决即给分)
  • 我怎么没有在java的开发文档看到 Javax.servlet的开发包?在线等...........
  • 为什么我的Jdk_doc里面没有Servlet的帮助?在线等。
  • C++ Bitsets 成员 none():如果没有位被设置则返回true
  • linux没有lilo命令阿,是不是表示没有 相关套件?我的下载吗,也没有RPM这个 命令,我该如何搞定他们出来
  • C++ I/O 成员 good():如果没有出现过错误则返回true
  • 请问:我发现我的系统里什么都没有啊,gcc没有,rpm也没有,这怎么办啊
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?
  • linux 下 没有aptitude,也没有 apt-get。
  • 有没有哪位知道linux下有没有什么可视聊天的工具
  • 求救!!安装redhat后,提示重启,但是没有没有redhat的启动选项
  • 请问:编译内核时,make bzimage命令后,提示没有这个规则,这有没有影响呀?
  • 有没有搞错,JSP精华版数据全部没有了。
  • 我想在VMware上装FreeBSD,有没有人这样做过?有什么问题没有?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3