日期:2014-05-20  浏览次数:20744 次

关于变量的问题!!
我想问一下第一个变量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++){

}