public class  zuihou
{
public static void main(String[] args) 
{//int bc=6;
int bc=56;
kan b = new kan();

System.out.println(bc);
System.out.println(b.shiyan());
}
}
class kan{

int shiyan()
{ int bc=10;return bc;
}}
我在main()函数中定义了个bc,存在栈中,接着调用kan类的对象引用b,调用b.shiyan()方法,在方法中用定义了一下int bc,即栈中有2个bc的定义了为什么没报错,谁知道帮看看。谢谢!!!!!

解决方案 »

  1.   

    建议你看看  深入java虚拟机  里面有程序运行时 内存中的分配  会让你理解的
      

  2.   

    IF里面还以定义变量呢,你写N个if else 可以在同一个类里定义同一个名称的变量N个。
    作用域都没弄清楚先去看书!
      

  3.   

    每个变量都有自己的域名空间,main的bc与kan的bc的域名空间不同。
      

  4.   

    你知道了Java栈,但是你知道Java栈的组成部分帧么
    帧由一个局部变量区,操作数栈,帧数据区组成每调用一个方法都会创建一个帧压入Java栈,方法调用完成该帧被弹出丢弃至于你说的变量,是放在Java栈的帧中的局部变量区
    每个方法是不同的帧,当然不会有问题