暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
7
1楼
com.itbaizhan.op;

TestEqual {
    (String[] args) {
        Sing p1=Sing(,);
        Sing p2=Sing(,);
        System..println(p1==p2);
        System..println(p1.equals(p2));
    }
}
Sing {
    ;
    String ;
    (id, String name){
        .=id;
        .=name;
    }
}
(Object obj) {
    (obj == ){
        ;
    }{
        (obj Person) {
            Person c = (Person)obj;
            (c.id==.id) {
                ;
            }
        }
    }
    zhe
    ;
}
}

这是为什么

image.png

看不到你完整的代码  检查id属性是否是private'  如果是 只能调用get方法获取属性 不能直接调用属性

所慕星河甚远
2楼
public class Student extends Person {

    public Student() {
    }
    public Student(String name, int age) {
        super(name, age);
        System.out.println("Student 构造器被调用,此处可以完成父类的初始化工作,实际上就是调用父类的构造器");
    }
    public void study() {
        System.out.println("学生学习");
    }
    public static void main(String[] args) {
        Student student = new Student("张三", 20);
        student.eat();
        student.study();
    }
}

老师为什么这个main主函数可以放在Student类里面运行,那Student不是在自己的类内部创建自己的对象了嘛

main方法可以再任何类里面运行的


在main方法中创建Student对象,只是普通的对象实例化行为,和其他类创建Student对象没有区别的

不是“自己创建自己”只是main创建了它的一个实例

@_@水水
3楼

image.png这个哪里出错了,看不出来不知道怎么错了

尚新途

不太理解,没搞懂

尚新途

第一,比较方法写在类外面了

第二,构造方法写的错的,没有void

4楼

image.png

尚新途

这个是因为你的obj是Object类型的,和Person02不是一个类型,使用不了其中的属性的

四明宝客
5楼
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类型的,完后去做比较

专注的码农
6楼
@Override
public boolean equals(Object obj) {
    return super.equals(obj);
}
(Object obj) {
    .equals(obj)}

为啥我导入equals方法是这样的,和老师的不一样?

尚新途

同学,代码可以放代码区么,这里下面的代码乱码了

专注的码农

没懂哦老师

尚新途

代码没有放到代码区的话这里是乱码的image.png

郭霖
7楼

代码没有显示错误但适配不成功运行不了疑问.png


尚新途

没有main方法呀,把测试的代码放到main方法里

哇哈哈哈哈
8楼

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,这样的代码看不了

image.png


么鸡么嘎
9楼

微信截图_20220914160219.png老师可以给我一下概念名词吗比如类方法什么之类的或者给我发文件  像第六行第十行这些叫什么啊

尚新途

这些概念名称老师这里也没有,这些东西在视频老师都有讲到,6行是创建类,关键字为class, extends是继承的关键字,10行是本类的构造方法,也就是这个TestObject这个类的,构造方法无返回值,非void修饰,方法名需要和类名保持一致,

e^jπ+1=0
10楼
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.

e^jπ+1=0
11楼
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呢

尚新途

已回复

JackieYuri
12楼

为什么这里用的是that,它和this有什么区别吗?

image.png

尚新途

这个that和this没有任何关系,这里that是对象名,可以是任意的。

二月有鲸的传说.
13楼

重写equals 对象的地址也变成一样的了 这是为啥

尚新途

我看一下你重写equals方法后,方法里是怎么定义的

元鑫
14楼

在equals不重写的情况下,equals与==有什么区别


尚新途

在不重写的情况下  equals就是==。

ZhangL
15楼
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,不然格式不对,无法查看代码。

image.png

尚新途
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,放到出现的横框中,这个代码你不觉得看不懂嘛

image.png

自我检测(5S)