You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java创建对象实例时出现输出异常的问题排查与解决

问题分析与解决方案

嘿,我一眼就看出问题出在哪了!你的Dog类里的age、name、breed这三个属性都加了static修饰符,这可是个关键错误哦。

为什么会出现这个问题?

在Java中,被static修饰的变量属于类本身,而不是类的某个实例对象。也就是说,不管你创建多少个Dog对象,它们都会共用这三个静态变量的值:

  • 当你创建第一个对象high时,静态变量被设置为"luffy"、19、"pomerian"
  • 紧接着创建第二个对象low时,这三个静态变量的值被直接覆盖成了"gold"、32、"german shepherd"
  • 最后打印两个对象的属性时,其实都是在读取类的静态变量值,自然就输出了最后一次设置的结果

修改后的正确代码

只需要去掉属性前面的static关键字,让它们成为实例变量,每个Dog对象就会拥有自己独立的属性副本了:

public class Dog{
    int age;
    String name;
    String breed;

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

    public Dog(String name,int age){
        this(name,age,"greed");
    }

    public static void main(String args[]){
        Dog high=new Dog("luffy",19,"pomerian");
        Dog low=new Dog("gold",32,"german shepherd");
        System.out.println(low.name+" "+low.age+" "+low.breed);
        System.out.println(high.name+" "+high.age+" "+high.breed);
    }
}

修改后的运行结果

gold 32 german shepherd
luffy 19 pomerian

这样就符合你期望的输出,两个对象各自保留自己的属性值啦。

内容的提问来源于stack exchange,提问作者rajat008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:00:19