A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Test {
  2.         private int a;

  3.         public static Test getInstance() {
  4.                 return new Test();
  5.         }

  6.         public void setT(int a) {
  7.                 this.a = a;
  8.         }

  9.         public int getT() {
  10.                 return a;
  11.         }
  12. }
复制代码
写了这样一段代码。然后想通过下面的set赋值,可是怎么也赋值不上,什么原因啊?求大神解答!!!
  1. public class Test2 {
  2.         public static void main(String[] args) {
  3.                 Test.getInstance().setT(10);
  4.                 System.out.println(Test.getInstance().getT());
  5.         }
  6. }
复制代码
输出结果是0,赋不上值是为什么


6 个回复

倒序浏览
打印的对象和赋值的对象不是一个。先用Test类型引用指向Test.getInstance(),再作操作。
回复 使用道具 举报
Test.getInstance().setT(10);
System.out.println(Test.getInstance().getT());
你这两句每次getInstance()就新建一个对象,他们两个之间没有关系的。
Test1 t = Test1.getInstance();
t.setT(10);               
System.out.println(t.getT());
就可一个了。
回复 使用道具 举报
{:2_41:}高深的样子
回复 使用道具 举报
pvbj0314 发表于 2015-5-26 20:44
打印的对象和赋值的对象不是一个。先用Test类型引用指向Test.getInstance(),再作操作。 ...

谢谢,终于知道了!
回复 使用道具 举报
csu050416 发表于 2015-5-26 20:52
Test.getInstance().setT(10);
System.out.println(Test.getInstance().getT());
你这两句每次getInstance ...

谢谢!!看了一晚上,可算知道是哪的问题了。。。
回复 使用道具 举报
搞这么复杂干啥,直接在主函数里new一个对象不就好了,为啥要在类里多加一个getInstance,多打多少字啊。。。
new也就那么3个字符而已...
楼上都是正解。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马