课程听了几遍还是听不懂的问题

课程听了几遍还是听不懂的问题

1、Object类是所有类的父类,怎么理解?
2、equals()也是Object类的方法吗?它的结果是布尔值吗?
3、这是课程里的代码:
     Animal one = new Animal("花花",2);
     Animal two = new Animal("花花",2);
    //equals测试:继承Object中的equals方法时,比较的是两个引用是否指向同一个对象
    boolean flag = one.equals(two);
    System.out.println("one 和 two的引用比较"+flag);
    System.out.println("one 和 two的引用比较"+(one==two));
老师,我不理解one和two里的名字和月份一模一样,都是花花和2,为什么使用equals比较后,返回的是false而不是true?
4、这是课程里的代码:
     String str1=new String("hello");
     String str2=new String("hello");
     flag=str1.equals(str2);
     System.out.println("str1和str2的引用比较"+flag);
     System.out.println("str1和str2的引用比较"+(str1==str2));
首先,我都弄不懂String类型竟然也能作为类去创建对象并实例化,这是什么操作?以往的写法是:String str="印度阿三";,这里怎么成这种写法了?接下来的比较就更是毁灭级的看不懂了,flag=true,(str1==str2)=false,天哪,老师,这都是些啥?

就觉得课程讲的太突兀了,突然来了一堆陌生的不能理解的知识。

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

1、equals方法不是比较的对象的地址值,而是它们的“内容”,这里也就是字符串的内容

one和two都指向的是真实的地址值,只不过equals方法比较的不是地址值,而是内容。

2、one==two比较的是他们的引用地址

3、是的,同学理解的非常正确,是声明并实例化了这两个对象。

4、比较的是内容,也就算比较一下str1代表的hello和str2代表的hello 是不是一样。

5、不一样,引用类型用==比较的是地址值。

6、toString方法,equals方法都是Object类中的方法。

如果我的回答解决了你的问题,请采纳。

  • 鱼儿0001 提问者 #1
    老师,boolean flag = one.equals(two);,这里的equals方法还是Object类的方法,没有修改的方法,你说比较的不是引用地址,比较的是内容?如果比较的是one和two的具体内容,就是里面存储的“花花”,”2”的内容,那euqals方法就得被重写啊,可是这里的equals方法是没被重写的。
    2019-05-02 09:43:12
  • 好帮手慕珊 回复 提问者 鱼儿0001 #2
    你好!equals()方法的作用一般是比较内容,但对于这个小节来说,确实没有重写equals()方法,所以相当于比较的是引用地址了,你的理解是对的。祝学习愉快!
    2019-05-04 10:08:06
提问者 鱼儿0001 2019-04-30 19:14:44

1、boolean flag = one.equals(two);
老师,在这里比较的是什么,比较的是是one和two的引用真正对象的地址吗?因为前面的课程说one、two并不是真正的对象,它们只是存储了对象的地址。
2、那么one==two比较的又是什么?还是比较它们的引用地址吗?
3、 String str1=new String("hello");
     String str2=new String("hello");
老师,这里的意思是声明并实例化String类的对象str1和str2吗?
4、 flag=str1.equals(str2);
老师,这是两个String类的对象str1、str2在做什么比较?它们比较的是什么?
5、str1==str2,这和上面的4的比较是一样的吗?还是不一样?

6、Object类里有哪些,以我现阶段都学过的常用的方法?

好帮手慕珊 2019-04-29 19:25:11

你好!下面分别回答你的问题:

1、Object是所有类的父类,也就是任意一个类都是默认继承Object类的

2、equals()也是Object类的方法,结果是布尔值

3、关于下面的代码,为什么内容相等返回的是false而不是true。是因为Animal类没有重写equals()方法。老师在这个小节举了一个关于字符串的例子,字符串用equals()方法进行比较,如果内容相等可以返回true。那是因为String类是JDK为我们定义好的,在String类中已经重新了equals()方法,知道是对谁进行比较。而Animal是我们自己定义的,equals()方法没有重写,就不知道哪些内容相等才能算相等。在下一个小节中就会介绍Animal类中重写equals()方法了

http://img1.sycdn.imooc.com//climg/5cc6dbb60001fcba07380303.jpg

4、String是类,虽然可以像基本数据类型一样直接使用,但也可以创建对象,在第三步骤的字符串中还会详细介绍。这里先知道  String str1=new String("hello");这种形式也可以给字符串赋值就可以了。

你是说下面这个看不懂吗?这个是把str1==str2的结果连接到前面的字符串后面。

http://img1.sycdn.imooc.com//climg/5cc6de050001110104500041.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    老师,我把我的问题写在了回答,这样利于版面整齐。
    2019-04-30 19:13:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师