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
相关产品推荐
相关产品推荐

