黑马程序员技术交流社区

标题: 求大神回答,为什么赋不上值?? [打印本页]

作者: 348532020    时间: 2015-5-26 20:34
标题: 求大神回答,为什么赋不上值??
  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,赋不上值是为什么



作者: 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()就新建一个对象,他们两个之间没有关系的。
Test1 t = Test1.getInstance();
t.setT(10);               
System.out.println(t.getT());
就可一个了。

作者: 宥美    时间: 2015-5-26 21:05
{:2_41:}高深的样子
作者: 348532020    时间: 2015-5-26 21:05
pvbj0314 发表于 2015-5-26 20:44
打印的对象和赋值的对象不是一个。先用Test类型引用指向Test.getInstance(),再作操作。 ...

谢谢,终于知道了!
作者: 348532020    时间: 2015-5-26 21:10
csu050416 发表于 2015-5-26 20:52
Test.getInstance().setT(10);
System.out.println(Test.getInstance().getT());
你这两句每次getInstance ...

谢谢!!看了一晚上,可算知道是哪的问题了。。。
作者: 曲终烟尽    时间: 2015-5-26 21:11
搞这么复杂干啥,直接在主函数里new一个对象不就好了,为啥要在类里多加一个getInstance,多打多少字啊。。。
new也就那么3个字符而已...
楼上都是正解。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2