黑马程序员技术交流社区

标题: this(0)的作用?0可以改成别的数字吗? [打印本页]

作者: 程媛媛    时间: 2013-3-21 18:25
标题: this(0)的作用?0可以改成别的数字吗?
本帖最后由 程媛媛 于 2013-3-22 14:47 编辑

public class Demo1 {
        
          final int var1;
          final int var2 = 0;

          Demo1(){
                  this(0);//this(0)的作用?括号里的内容改成别的数字吗?
          }
          Demo1(int x){
                  var1 = x;
          }
}


作者: 我手心里的宝    时间: 2013-3-21 18:31
this(0)是调用本类的构造方法,0是为Demo1(int x){
                  var1 = x;
          }
传值 这样在new对象时改变了其他的值
作者: 我手心里的宝    时间: 2013-3-21 18:32
不好意思按错键了,版主不要误会 哈,改变了成员变量的值,就是一个传参
作者: 唐永康    时间: 2013-3-21 18:38
public class Demo1 {
        
          final int var1;
          final int var2 = 0;

          Demo1(){
                  this(0);//this(0)的作用?括号里的内容改成别的数字吗?
          }
          Demo1(int x){
                  var1 = x;
          }
}



this(0)表示调用本类的一个参数为int型的构造方法,而你这个代码中有两个构造方法,分别是
空参数的Demo1(),和带int型参数的Demo1(int x);如果你上面的final int var1;没有赋值,可以变成其他的数字,但是var1是一个终态的变量。
去掉final的话,可以赋不同的值。如果这里想把值赋给var2就不行了,因为已经被赋值了,就不能被再赋值。


作者: 张文星    时间: 2013-3-21 18:40
java中this关键字的作用是代表当前对象,上面this.(0)表示单前对象的构造方,而且是有参的,参数为0,也就是你后面定义的Demo1(int x),所以可以改成其他的,只要没有约束就行。
作者: 杨杨    时间: 2013-3-21 18:56
能能能能
作者: 胡国彬    时间: 2013-3-21 21:28
完全可以,这个0相当于给var1这个变量赋值.
this(0)相当于Demo1(0),也就是相当于把0赋给了var1这个变量.




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