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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程媛媛 中级黑马   /  2013-3-21 18:25  /  1859 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 程媛媛 于 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;
          }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
this(0)是调用本类的构造方法,0是为Demo1(int x){
                  var1 = x;
          }
传值 这样在new对象时改变了其他的值
回复 使用道具 举报
不好意思按错键了,版主不要误会 哈,改变了成员变量的值,就是一个传参

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
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就不行了,因为已经被赋值了,就不能被再赋值。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
java中this关键字的作用是代表当前对象,上面this.(0)表示单前对象的构造方,而且是有参的,参数为0,也就是你后面定义的Demo1(int x),所以可以改成其他的,只要没有约束就行。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
能能能能
回复 使用道具 举报
完全可以,这个0相当于给var1这个变量赋值.
this(0)相当于Demo1(0),也就是相当于把0赋给了var1这个变量.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马