|ω・)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日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法