public class ddd {
private int value = 1; public ddd(int value) {
value = value + 3;
} public void method(int val) {
value += val + 2;
} public int getValue() {
return value;
} public static void main(String[] args) {
ddd m = new ddd(2);
System.out.println(m.getValue());
m.method(3);
System.out.println(m.getValue());
}
}
谁能帮我讲解下执行顺序,谢谢。输出结果是1,6。 我最开始以为是5,10.
private int value = 1; public ddd(int value) {
value = value + 3;
} public void method(int val) {
value += val + 2;
} public int getValue() {
return value;
} public static void main(String[] args) {
ddd m = new ddd(2);
System.out.println(m.getValue());
m.method(3);
System.out.println(m.getValue());
}
}
谁能帮我讲解下执行顺序,谢谢。输出结果是1,6。 我最开始以为是5,10.
解决方案 »
- 关于Java线程优先级
- 我想给工程加载sun.net这个包,加载不了,怎么回事?
- 请问jad允许的编码方式是什么?可以是GB2312吗?
- jbuilder2005项目栏的的右键make和rebuild是什么功能?
- 高手请进,求解一个Java面试编程题!
- 【200分】J2ME游戏想交给移动提供下载收费服务,如何做?我的程序想发布到国外,有些什么比较好的站点?
- 有没有可能在一个方法执行的时候动态的知道这个方法属于哪个包那个类的什么方法名?
- 刚学JAVA,想做个局域网管理项目,请高手指点(散分)
- 烦了几天的内部窗体问题
- 关于BigDecimal的一个问题
- if (request.getParameter("act").equalsIgnoreCase("save"))这条语句为什么会抛出异常
- 大家帮我看下我错在哪,我的图像显示不出来列
这句话,我试了下,把 括号里边的2 改成任意数字都不会影响结果。对象引用 m ,在下边都用到了,除了提出对象引用,这个 ddd m = new ddd(2);还有其他作用么? 有没有什么说法在这种用法上?
this.value=value+3就清晰多了,其实你这个构造函数并没有将似有变量value改变值,只是将参数value毫无意义地变了一下,所以你的对象m中,value还是默认的1
value = value + 3; //这里两个value只在这个方法里有用,离开这个方法其生存期就消亡了.
}
而按楼主意思应该这样做的:
public ddd(int value) {
this.value = value + 3; //这里的this.value是指实例变量,会对这个实例有影响,就是改变了这个变量的值了,所以你用这个实例m的方法getValue()就会得到5.而这里的value只在这个方法里有用,离开这个方法其生存期就消亡了,但此时的实例变量已经被修改了.
}
谢谢楼上几位的帮助!