关于变量的问题!!
我想问一下第一个变量VB,为什么不会和其他方法里的变量vb冲突呢!!
Java code
public class Type {
/**
* @param args
*/
public static void main(String[] args) {
int vb=5;
mm();
mm01();
System.out.println(vb+mm()+mm01());
}
private static void p(Object o){
System.out.println(o);
}
private static int mm(){
int vb=3;
p(vb);
return vb;
}
private static int mm01(){
int vb=4;
p(vb);
return vb;
}
}
------解决方案--------------------晕,我以为你说会呢,害我在那使尽找错.
你的VB只在它声明的方法里有作用,跟其它方法没关系
------解决方案--------------------看变量的作用域只在块中,所谓的块就是指 { } 包起来的代码段。
出了自己的作用域变量就会消失,所引用的对象就有可能会被垃圾回收器进行内存回收处理。
------解决方案--------------------vb是一个局部变量,它的作用域只在声明它的代码块里有效,
出了这个区域,它将不可视。
此题的vb这个变量都是在方法里声明的,各个方法是彼此独立的,
所以这样在多个方法中创建同一个变量是可以的,你还可以再声明一个
全局的vb变量也是没有问题的。因为在执行方法时,方法里的vb变量将
把全局变量屏蔽掉。
------解决方案--------------------你在 mm()这个方法里定义了vb 是这个方法(mm())的变量
同理mm01()这个方法里的vb也是 mm01()这个方法的方法变量
同理main函数里的vb也在它的那个范围有效,所以他们3个是不会冲突的
这个是变量的作用域的知识
------解决方案-------------------- 就跟IP地址一样``在家里的局域网里`机器的IP为192.168.1.100 公司里电脑的IP也是192.168.1.100 .你不关电脑去上班.到公司的时候再开电脑的时候,ip不会发生冲突.与这同一个道理```
```他们互相都看不见对方``当然不会有冲突``
------解决方案--------------------全局变量 和 局部变量
int i = 0;
for(int i = 0; i < 3; i++){
}