这个哪里出错了,看不出来不知道怎么错了
不太理解,没搞懂
第一,比较方法写在类外面了
第二,构造方法写的错的,没有void
这个是因为你的obj是Object类型的,和Person02不是一个类型,使用不了其中的属性的
public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TestEquals that = (TestEquals) o; return id == that.id; }
老师请问以下,IDEA自动生成的重写equals方法:
TestEquals that = (TestEquals) o;
这行代码没看懂,尤其是等号后面的
TestEquals that = (TestEquals) o;
TestEquals 这个是你的当前类,o是你传递的要比较的类,(TestEquals) o;这个是把Object这个传递的参数强转成了TestEquals类型的,完后去做比较
@Override public boolean equals(Object obj) { return super.equals(obj); }
(Object obj) { .equals(obj)}
为啥我导入equals方法是这样的,和老师的不一样?
同学,代码可以放代码区么,这里下面的代码乱码了
没懂哦老师
代码没有放到代码区的话这里是乱码的
代码没有显示错误但适配不成功运行不了
没有main方法呀,把测试的代码放到main方法里
TestObject Object { String String (idString nameString pwd){ } String () { +++} (String[]args){ TestObject t2 = TestObject()TestObject t3 = TestObject()System..println(t2.toString())System..println(t3.toString())System..println(t2.equals(t3))} }
老师为什么这个结果的用户名跟密码都是null
代码放到代码区,代码语言选择java,这样的代码看不了
老师可以给我一下概念名词吗比如类方法什么之类的或者给我发文件 像第六行第十行这些叫什么啊
这些概念名称老师这里也没有,这些东西在视频老师都有讲到,6行是创建类,关键字为class, extends是继承的关键字,10行是本类的构造方法,也就是这个TestObject这个类的,构造方法无返回值,非void修饰,方法名需要和类名保持一致,
package com.JB.yhb; public class TestObject { public static void main(String[] args) { Person2 s=new Person2(18,171,"高尚"); TestObject t=new TestObject(); s.rest(); System.out.println(s.age+" "+s.height+" "+s.name); System.out.println(t.toString()); System.out.println(s); } } class Person2 extends Object{ String name; int age; int height; public Person2(int age,int height,String name){ this.age=age; this.height=height; this.name=name; System.out.println("你好"); } @Override public String toString() { return null; } public void rest(){ System.out.println("休息一会!"); } } 为什么编译之后,t的地址显示出来了,s显示null呢
重写toString方法。不要返回null.
com.JB.yhbTestObject { (String[] args) { Person2 s=Person2()TestObject t=TestObject()s.rest()System..println(s.++s.++s.)System..println(t.toString())System..println(s)} } Person2 Object{ String (ageheightString name){ .=age.=height.=nameSystem..println()} String () { } (){ System..println()} }
为什么编译之后,t的地址显示出来了,s显示null呢
已回复
为什么这里用的是that,它和this有什么区别吗?
这个that和this没有任何关系,这里that是对象名,可以是任意的。
重写equals 对象的地址也变成一样的了 这是为啥
我看一下你重写equals方法后,方法里是怎么定义的
在equals不重写的情况下,equals与==有什么区别
在不重写的情况下 equals就是==。
User { String String (idString nameString pwd){ .=id.=name.=pwdSystem..println(+id++name++pwd)} (String[]args){ User u1=User()User u2=User()System..println(u1)System..println(u2.toString())System..println(u1==u2)System..println(u1.equals(u2))} }
第一次运行输出结果
id1001name1pwd123456
id1001name1pwd123456
com.zhang.test.User@15aeb7ab
com.zhang.test.User@7b23ec81
false
false
去掉/*后运行结果
id1001name1pwd123456
id1001name1pwd123456
com.zhang.test.User@408
com.zhang.test.User@408
false
true
使用equal方法后会直接对比实际数值,使输出结果产生上面这样的变化吗
代码放到代码区,选择java,不然格式不对,无法查看代码。
User { String String (idString nameString pwd){ .=id.=name.=pwdSystem..println(+id++name++pwd)} (String[]args){ User u1=User()User u2=User()System..println(u1)System..println(u2.toString())System..println(u1==u2)System..println(u1.equals(u2))} }
这里选择一下java,放到出现的横框中,这个代码你不觉得看不懂嘛
老师我想问一下,如果a==b返回是true,那么a.equals(b)返回的也是true,对吗?
我知道==比的是地址,.equals()比的是值。如果不重写equals方法的情况下,
能举个例子,a==b返回是true,a.equals(b)返回是false的代码吗?我想了一下,没写出来
双等基本类型下比较的是值,引用类型比较的是地址。而equals在不重写的情况下比较的是地址。
所以你说的这种==为true,那么equals也肯定是为TRUE的。
老师,笔记本上的insert如何用,alt+insert,笔记本上不太好用,查了一下说按住Fn会转换,使用了还是不行。
我看一下你的键盘,给我拍一下吧
你这个键盘上没有insert键吧
PgDn键上还有insert,在下面,橘红色字。
能告诉我电脑的型号吗
Fn+PgDn不可以吗,组合键。Fn键没有坏吧。如果不行,可以加一个外接的键盘
没坏,我在使用Fn+PgDn做思维导图时,没问题,就是在IDEA里不能用。
好的老师,从新设置的tab+shift按键
嗯嗯,解决就好