变量作用域求解

ihefe 2010-12-15 04:22:58

public class test{
private String DBhost="";
public Object a(){
test t=new test();
t.b();
return (Object)this.DBhost;//这里会接收到函数b,DBhost的值吗?
}
private viod b(){
this.DBhost="abc";
}
}
//这样写对吗?求解谢谢

...全文
104 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_forrest 2010-12-15
  • 打赏
  • 举报
回复
明白了。。。刚才误解你的意思了

test t=new test();
t.b();
return (Object)this.DBhost;//这里会接收到函数b,DBhost的值吗?

你是想说,t.b()调用以后this.DBhost的值是否是abc
不是。。。
因为DBhost变量 并不是static的,那么他会为每一个对象都分配一个DBhost
每new一个test DBhost都不是一样的
当你以后调用a()方法时,
return (Object)this.DBhost;
这个this就是你调用a()的那个对象


private viod b(){
this.DBhost="abc";
}
这个this,在方法a()中被t调用b(),这个this就是t

t与你调用a()方法并不是一个对象
所以他们的DBhost是相互独立的
ihefe 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 e_forrest 的回复:]

你去弄明白 成员变量 与 局部变量的区别 就明白了

你一直在对成员变量 DBhost进行操作(DBhost命名不规范,最好写成dbHost或者开头有特殊意义的话就DBHost),而DBhost在类中任何方法都是可见的,一旦生成一个对象,那么对这个对象的所有成员方法来说成员变量都只有一个

如果你在执行程序的时候先调用b()再调用a()那么DBhost的值就是abc了。。。
[/Quote]

给你吧。。
Jlins 2010-12-15
  • 打赏
  • 举报
回复
我来了 结吧
e_forrest 2010-12-15
  • 打赏
  • 举报
回复
你去弄明白 成员变量 与 局部变量的区别 就明白了

你一直在对成员变量 DBhost进行操作(DBhost命名不规范,最好写成dbHost或者开头有特殊意义的话就DBHost),而DBhost在类中任何方法都是可见的,一旦生成一个对象,那么对这个对象的所有成员方法来说成员变量都只有一个

如果你在执行程序的时候先调用b()再调用a()那么DBhost的值就是abc了。。。
ihefe 2010-12-15
  • 打赏
  • 举报
回复
弄懂了。用static .结帖谁来

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧