|ω・)267 2022-11-07 19:33 采纳率: 87.5%
浏览 31
已结题

java中遇到的问题,难以解决

Object_4.java
package JAVA;

public class Object_4 {
    private String name;
    private int age;
    //设置内部类为外部类传递参数参数
    public Object_4(){
        //TODO Auto-generated constructor stub
        //添加TODO方法
    }
    public Object_4(String name, int age){

    }

    //添加Getter和Setter方法。
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //重构toString方法

    @Override
    public String toString() {
        return  "姓名:"+this.name+",年龄:"+this.age;
    }

    //重写equals方法
    @Override
    public boolean equals(Object obj) {
        //判断内存地址
        if (obj == this) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        //判断是否是同一类型的对象
        if (obj instanceof Object_4) {
            //强制转换成Person类型
            Object_4 s = (Object_4) obj;
            //判断他们的属性值    注:这里的age为什么要用==?可以在评论区回答
            if (this.name.equals(s.name) && this.age == (s.age)) {
                return true;
            }
        }
        return false;
    }
}

Test.java

package JAVA;

public class Test04 {
    public static void main(String[] args) {
        Object_4 s1=new Object_4("ZYH",20);
        Object_4 s2=new Object_4("SG",20);
        //getClass()方法是获得调用该方法的类
        Class class1=s1.getClass();
        Class class2=s2.getClass();
        if(class1==class2){  //class方法的返回值是一个类型
            System.out.println("s1和s2是同一个类型");
        }else{
            System.out.println("s1和s2不是同一个类型");
        }
        System.out.println("=======================");
        //hashCode()方法: 对象的地址字符串或数字使用hash算法计算出来的int类型的数值
        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());
        System.out.println("=======================");
        //toString方法: 返回类名和他的引用地址
        System.out.println(s1.toString());
        System.out.println(s2.toString());
        System.out.println("=======================");
        //equals方法判断两个对象是否相等true/false
        System.out.println(s1.equals(s2));

        Object_4 s3=new Object_4("小敏",20);
        Object_4 s4=new Object_4("小敏",20);
        System.out.println(s3.equals(s4));
    }
}

运行Tes.java的时候出现如下报错:

img

跟着教程来写的,一模一样,但是我的始终不行。
望帮忙解决,谢谢!!

  • 写回答

3条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2022-11-07 19:40
    关注

    空指针了么不是,54行这里this后的值都是没有的,有参构造方法里边传值进来没有赋值,这样改一下试试

     public Object_4(String name, int age){
            this.name=name;
            this.age=age;
        }
    
    

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月8日
  • 已采纳回答 11月7日
  • 创建了问题 11月7日

悬赏问题

  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)
  • ¥15 安装GroudingDINO RuntimeError: Error compiling objects for extension
  • ¥15 关于推送项目到github的问题
  • ¥15 急!C++指针编写相关的问题
  • ¥15 kerberos身份认证配置问题
  • ¥30 用python写一个多签情况下波场的代理资源和回收资源
  • ¥15 matlab学期例题代码答疑
  • ¥15 在线手电筒追加按钮JS