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

在synchronized块中声明变量!!
Java code

public void test(){
    int i;
    synchronized (this)
    {
        i = 0;
        int j=0;
        int k;
    }
    j++;//编译错误j cannot resolved to a variable!!!
    int k=0;//编译成功:居然可以重复定义!!!
    }


想了半天,一直想不通,为何在synchronized块中定义的变量在方法域内就好像没有定义过一样无法访问。
求指点~

------解决方案--------------------
for(int i=0;i<10;i++){
...
}
for(int i=0;i<10;i++){
...
}
这两个for循环是可以在同一个方法里面共存的,i是局部变量,定义了两次。
一样的道理,局部变量的作用域是{}
------解决方案--------------------
作用域的问题与synchronized无关
------解决方案--------------------
其实就是变量作用域的问题,
------解决方案--------------------
探讨

for(int i=0;i<10;i++){
...
}
for(int i=0;i<10;i++){
...
}
这两个for循环是可以在同一个方法里面共存的,i是局部变量,定义了两次。
一样的道理,局部变量的作用域是{}