| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖
标题:有点问题
只看楼主 加入收藏
tottibuffon
Rank: 2
等 级:论坛游民
帖 子:105
专家分:20
注 册:2009-6-5
结帖率:83.87%
收藏
已结贴  问题点数:2 回复次数:8 
有点问题
import java.lang.* ;

public class MyDate {
  private int day;
  private int month;
  private int year;

  public MyDate(int day, int month, int year) {
     this.day   = day;
     this.month = month;
     this.year  = year;
  }
  public MyDate(MyDate date) {
    this.day   = date.day;
    this.month = date.month;
    this.year  = date.year;
  }
}

class TestMyDate
{
    public static void main(String[] args)
    {
        MyDate day1=new MyDate(20,3,2009);
        MyDate day2=new MyDate(20,3,2009);
                System.out.println(day1.equals(day2));
                System.out.println(day1.hashCode());


        
    }
}

问题:day1.equals(day2)的返回值为什么是false?
搜索更多相关主题的帖子: void private public import 
2009-10-16 16:25
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:2 
对于Object对象,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回
true,也就是人们常说的引用比较而不是值比较.你new了两次,明显不是一个对象,你的,明白!!!

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2009-10-16 16:40
dadongzicool
Rank: 6Rank: 6
等 级:贵宾
威 望:11
帖 子:209
专家分:474
注 册:2009-3-20
收藏
得分:0 
zhi

本人出售软件专业毕业设计(包括论文,代码)题目众多,价格从优联系方式:QQ
1635008514(寻找高校代理)
2009-10-16 18:11
多多关照
Rank: 2
等 级:论坛游民
帖 子:42
专家分:51
注 册:2009-8-22
收藏
得分:0 
回复 2楼 流星雨
恩,可以也把day2.hashCode()打印出来与day1.hashCode()对比一下
我都明白了,估计他也会明白的,是吧,姐?
嘿嘿

[ 本帖最后由 多多关照 于 2009-10-16 19:19 编辑 ]
2009-10-16 19:11
qq378166396
Rank: 2
等 级:论坛游民
帖 子:9
专家分:24
注 册:2009-8-25
收藏
得分:0 
equals()方法应该比较的是两个对象的属性吧??
== 才是要求2个对象都指向同一个空间才对啊;

这个好像是equals(0和 == 的区别吧
2009-10-16 22:49
qq378166396
Rank: 2
等 级:论坛游民
帖 子:9
专家分:24
注 册:2009-8-25
收藏
得分:0 
public class AA {
 
     
    public static void main(String[] args) {
        String a = new String("zhangqi");    //*
        String b = new String("zhangqi");
        System.out.println(a.equals(b));
    }
 
}
或者把*换成 String a = “zhangqi";  

返回结果都是true!  
2009-10-16 22:54
qq378166396
Rank: 2
等 级:论坛游民
帖 子:9
专家分:24
注 册:2009-8-25
收藏
得分:0 
补充
public class AA {
 
     
    public static void main(String[] args) {
        String a = new String("zhangqi");
        String b = new String("zhangqi");
        System.out.println(a==b);
    }
 
}
  

结果是false
2009-10-16 23:01
kingyue
Rank: 2
等 级:论坛游民
威 望:1
帖 子:28
专家分:21
注 册:2009-6-17
收藏
得分:0 
import java.lang.* ;

public class MyDate {
  private int day;
  private int month;
  private int year;

  public MyDate(int day, int month, int year) {
     this.day   = day;
     this.month = month;
     this.year  = year;
  }
  public MyDate(MyDate date) {
    this.day   = date.day;
    this.month = date.month;
    this.year  = date.year;
  }
}

class TestMyDate
{
    public static void main(String[] args)
    {
        MyDate day1=new MyDate(20,3,2009);
        MyDate day2;
        day2=day1;
        //MyDate day2=new MyDate(20,3,2009);
                System.out.println(day1.equals(day2));
                System.out.println(day1.hashCode());


        
    }
}
改一下就能出来true了
2009-10-17 17:02
peter_ys
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-10-20
收藏
得分:0 
day1和day2是两个对象,当用new创建后,指向不同的内存地址,所以用equals判断他们的地址时,肯定是false了。
2009-10-20 12:19
快速回复:有点问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048866 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved