在看this时遇到问题,希望大家给出解释
时间:2011-10-08
来源:互联网
int i;
Leaf(int i){this.i = i;
}
Leaf increament(){
i++;
return this;
}
void print(){
System.out.println("i = "+i);
}
public static void main(String[] args){
Leaf leaf = new Leaf(8);
leaf.intcreament().intcreament().print();//这句是什么意思??
}
}
作者: chengnuo628 发布时间: 2011-10-08
作者: LeeHomWong 发布时间: 2011-10-08
楼主没有弄懂返回值啊,
leaf.intcreament()返回Leaf对象的引用,由于return this就是返回本身的
对象引用,之后就一样了,最后调用print方法
作者: cqltwslt 发布时间: 2011-10-08
作者: kevin_lfan 发布时间: 2011-10-08
其实这句话可以转换为:
Leaf leaf2=leaf.increament();
Leaf leaf3=leaf2.increament();
leaf3.print();
作者: jya126 发布时间: 2011-10-08
作者: shidiqiazao 发布时间: 2011-10-08
作者: tianyafangcaolu 发布时间: 2011-10-08
leaf.increament()返回的一个leaf 后又调用了一次increament(),组后将其打印出来i=8,
其实这句话可以转换为:
Leaf leaf2=leaf.increament();
Leaf leaf3=leaf2.increament();
leaf3.print();
这个说法有问题。
首先用带参构造函数生成一个对象,并且其值为8,在调用increament()方法时,i值增加1。可以看出其调用了两次,所以i值应该为10
作者: ksqqxq 发布时间: 2011-10-09
作者: Baobeiaini97527 发布时间: 2011-10-09
leaf.intcreament().intcreament().print();
上面这句代码调用两次intcreament()方法,每次调用方法后Leaf的成员变量i值加1,并且在返回此对象
最终结果i=10
作者: leilei0932_java 发布时间: 2011-10-09
this指代当前对象,也就是Leaf
return this; 返回的就是一个Leaf对象
leaf.intcreament().intcreament().print();
leaf.intcreament() 此时返回的是一个Leaf对象 此时调用了一个构造方法 i = 8 + 1
leaf.intcreament().intcreament() 在上一步的基础上再调用一次intcreament() 也就是再调用一次构造方法 此时 i = 8 + 1 + 1 = 10
leaf.intcreament().intcreament().print();在上一步的基础上 将结果i 打印出
结果为 10
不知这样解释楼主是否明白?
作者: TKD03072010 发布时间: 2011-10-09
作者: lliiqiang 发布时间: 2011-10-09
作者: z25765339 发布时间: 2011-10-09
作者: wuweiqi 发布时间: 2011-10-09
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28