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

Java简单程序问题求助:输出对象地址而非预期值5

解决你的Java程序输出问题

嗨,我来帮你搞定这个问题!你现在看到的suma: bandymas.WriteOut@70dea4e其实是Java对象的默认字符串表示——当你直接打印一个对象时,Java会调用Object类的toString()方法,这个方法的默认输出格式就是[类名]@[对象的哈希码],所以才会出现这个看起来奇怪的结果。

要得到你期望的suma: 5,有两种简单的解决方案:

方案1:重写toString()方法

在你的WriteOut类里添加一个自定义的toString()方法,让它返回sumas的值,这样打印对象时就会输出你想要的内容了:

class WriteOut { 
    private static int sumas; 
    public void sud(int sds) { 
        sumas = sds; 
    }

    // 重写toString方法,自定义对象的字符串表示
    @Override
    public String toString() {
        return String.valueOf(sumas);
    }

    public static void main(String arg[]) { 
        WriteOut sum = new WriteOut(); 
        sum.sud(5); 
        System.out.println("suma: " + sum); 
    } 
}

方案2:添加getter方法获取sumas值

因为sumas是私有变量,你可以给它加一个公共的getter方法,然后直接打印这个方法的返回值:

class WriteOut { 
    private static int sumas; 
    public void sud(int sds) { 
        sumas = sds; 
    }

    // 提供获取sumas的公共方法
    public int getSumas() {
        return sumas;
    }

    public static void main(String arg[]) { 
        WriteOut sum = new WriteOut(); 
        sum.sud(5); 
        System.out.println("suma: " + sum.getSumas()); 
    } 
}

另外提个小建议:sumas被声明为static,这意味着所有WriteOut的实例都会共享这个变量的值。如果你的需求是每个对象拥有自己独立的sumas,记得去掉static修饰符哦。

内容的提问来源于stack exchange,提问作者Šarūnas Zu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:41:20