[求助]关于this的初学问题!
public class Testvarible{
private int i=1;
public void method()
{
int i=4,j=5;
this.i=i+j;//this.i里的i是指哪个i?
System.out.println(i);//为什么输出4?
method2(7);
}
public void method2(int i)
{
int j=8;
this.i=i+j;
System.out.println(i);//这里也不太懂!
System.out.println(this.i);
}
public static void main(String [] args)
{
Testvarible t=new Testvarible();
t.method();
}
}
搜索更多相关的解决方案:
初学
----------------解决方案--------------------------------------------------------
this.i=i+j;//this.i里的i是指哪个i?指private int i=1;thus指向当前累里面的变量
System.out.println(i);//为什么输出4?这里的i指int i=4,j=5;是函数域中的局部变量
System.out.println(i);//这里也不太懂!这里的i是private int i=1; 因为在函数里没有重新申明 所以输出 9 是不是?
----------------解决方案--------------------------------------------------------
指向当前累里面的变量
不是指成员变量吗?
this.i=i+j;加的结果是给成员变量了吗?
this.i用的不是成员变量吗?
还有System.out.println(i);//结果是7
[此贴子已经被作者于2007-3-31 9:08:23编辑过]
----------------解决方案--------------------------------------------------------
his就是"调用方法的那个对象"的引用
看这个概念还是不太懂,有空能帮举个小例子详细说下吗?
我能这么理解吗?
A b=new A();
b.a就是this.a
----------------解决方案--------------------------------------------------------
this只在类的内部使用,但是你可以这样理解.
int i=4,j=5;
this.i=i;//左边的是对象的成员,右边的是声明的变量
//println(i)输出的是变量i;
//println(this.i);输出成员i;
method2(int i)中,println(i)输出的是形参i,传进去的是7,所以输出7.
----------------解决方案--------------------------------------------------------
可以这么想
this.i指的是成员变量,i指的是局部变量,this.i = i + j 改变的是成员变量,
局部变量并没有变,打印i打印出的是局部变量。
method2方法中原理也是一样,传递的参数i就是一个局部变量i
----------------解决方案--------------------------------------------------------
成员变量和局部变量不是在一个内存空间吗?
是不是成员在栈,方法里的变量在堆?
[此贴子已经被作者于2007-3-31 10:58:17编辑过]
----------------解决方案--------------------------------------------------------
成员在堆,方法里的变量在栈吧
堆是存放永久的,栈是存放暂时的
----------------解决方案--------------------------------------------------------
谢谢大家,终于差不多明白了,头痛半天了,谢谢!
----------------解决方案--------------------------------------------------------
对了,对象不是在堆吗?
难道成员变量和方法里的变量在堆的不同空间?
没怎么看过堆和栈,呵呵!
[此贴子已经被作者于2007-3-31 11:44:27编辑过]
----------------解决方案--------------------------------------------------------