zoukankan      html  css  js  c++  java
  • 内部类访问外部类的数据成员

    public class A
    {
        public static void main(String[] args)
        {
           final int x=11,y=22;
           class B
           {
               void f(){System.out.println(x+y);}
           }
           B k=new B();
           k.f();
        }    
    }

    我们都知道如果x,y变量不加上final,IDE会让我们无法通过代码检查,那为什么我们必须得加上final呢?

    方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。

    如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。

    如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。

  • 相关阅读:
    第七周上机
    第六周作业
    第六周上机作业
    第五周上机作业
    java第四周作业
    上机作业
    第三次java作业
    java作业
    第七周作业
    JAVA第七周上机作业
  • 原文地址:https://www.cnblogs.com/cha1r/p/3460851.html
Copyright © 2011-2022 走看看