黑马程序员技术交流社区

标题: 为什么会异常? [打印本页]

作者: 马雨铎    时间: 2011-7-28 23:07
标题: 为什么会异常?
public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
  final int j=3;
  int k=4;
  class Nei
  {
   public void myNeiVoid()
   {
   System.out.println(h);
   System.out.println(i);
   System.out.println(j);
   //System.out.println(k);
  }
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
  LianXil lx=new LianXil();
  lx.myVoid();
}
}        
h、i、j 都能正常访问,但是 把第四个//System.out.println(k); 给释放,访问 K 就会发生变异异常,这是为什么?
作者: 匿名    时间: 2011-7-28 23:38
你把第四个//System.out.println(k)给注释,但你在
public void myVoid()
{
  final int j=3;
  int k=4;
方法中的对象中定义了K成员变量啊,在这你又调用了 lx.myVoid(); 方法,程序就没找到变量K,所以会异常啊
作者: 袁春龙    时间: 2011-7-28 23:43
标题: 回复 楼主 的帖子
内部类的方法要访问外部类的成员要加final修饰符
[ 本帖最后由 袁春龙 于 2011-07-28  23:45 编辑 ]
作者: 匿名    时间: 2011-7-29 00:21
标题: 回复 楼主 的帖子
这样[code]public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
  final int j=3;
  final int k=4;
  class Nei
  {
   public void myNeiVoid()
   {
   System.out.println(h);
   System.out.println(i);
   System.out.println(j);
   System.out.println(k);
  }
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
  LianXil lx=new LianXil();
  lx.myVoid();
}
}         [/code]把 int  k = 4;声明为final




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2