| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 786 人关注过本帖
标题:[求助]关于this的初学问题!
只看楼主 加入收藏
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
 问题点数:0 回复次数:10 
[求助]关于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();
}
}
搜索更多相关主题的帖子: 初学 
2007-03-31 08:32
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
收藏
得分:0 
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 是不是?

fighting!from now on!
2007-03-31 08:48
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
得分:0 

指向当前累里面的变量
不是指成员变量吗?
this.i=i+j;加的结果是给成员变量了吗?

this.i用的不是成员变量吗?


还有System.out.println(i);//结果是7

[此贴子已经被作者于2007-3-31 9:08:23编辑过]


初学者 电子书下载! http:///in.asp?id=a87505265
2007-03-31 09:05
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
得分:0 

his就是"调用方法的那个对象"的引用

看这个概念还是不太懂,有空能帮举个小例子详细说下吗?

我能这么理解吗?
A b=new A();
b.a就是this.a


初学者 电子书下载! http:///in.asp?id=a87505265
2007-03-31 09:31
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
this只在类的内部使用,但是你可以这样理解.
int i=4,j=5;
this.i=i;//左边的是对象的成员,右边的是声明的变量
//println(i)输出的是变量i;
//println(this.i);输出成员i;

method2(int i)中,println(i)输出的是形参i,传进去的是7,所以输出7.

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-31 10:18
旋转女孩
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-3-22
收藏
得分:0 
可以这么想

this.i指的是成员变量,i指的是局部变量,this.i = i + j 改变的是成员变量,
局部变量并没有变,打印i打印出的是局部变量。
method2方法中原理也是一样,传递的参数i就是一个局部变量i


即使所有人反对,我依然坚持我的选择……
2007-03-31 10:49
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
得分:0 

成员变量和局部变量不是在一个内存空间吗?

是不是成员在栈,方法里的变量在堆?

[此贴子已经被作者于2007-3-31 10:58:17编辑过]


初学者 电子书下载! http:///in.asp?id=a87505265
2007-03-31 10:54
旋转女孩
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2007-3-22
收藏
得分:0 
成员在堆,方法里的变量在栈吧
堆是存放永久的,栈是存放暂时的

即使所有人反对,我依然坚持我的选择……
2007-03-31 11:15
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
得分:0 

谢谢大家,终于差不多明白了,头痛半天了,谢谢!


初学者 电子书下载! http:///in.asp?id=a87505265
2007-03-31 11:37
a87505265
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-3
收藏
得分:0 
对了,对象不是在堆吗?
难道成员变量和方法里的变量在堆的不同空间?

没怎么看过堆和栈,呵呵!

[此贴子已经被作者于2007-3-31 11:44:27编辑过]


初学者 电子书下载! http:///in.asp?id=a87505265
2007-03-31 11:41
快速回复:[求助]关于this的初学问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022001 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved