|ω・)267 2022-11-07 19:33 采纳率: 93.3%
浏览 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 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥80 部署运行web自动化项目