黑马程序员技术交流社区

标题: 黑马程序员----局部内部类要访问局部变量 [打印本页]

作者: Ranger-Master    时间: 2015-5-24 10:33
标题: 黑马程序员----局部内部类要访问局部变量
本帖最后由 Ranger-Master 于 2015-5-24 10:35 编辑

Java培训、Android培训、iOS培训、.Net培训、期待与您交流
/*
局部内部类:在一个方法内部定义的类称作为局部内部类。
如果局部内部类要访问局部变量,那么局部变量必须使用final去修饰。
*/
class Outer{
    public void print(){

    final int y = 100;    // y的生命周期:执行到该语句的时候存在内存中, 方法执行完毕之后消失。
    //局部内部类
    class Inner{

        final  int x = 10;
        public void show(){
                System.out.println("这个是一个局部内部类的show方法.."+y); //问题:给人感觉y的生命周期被延长了。
                /*
                解决办法: 让局部内部类访问局部变量的复制品。   
                */
                }
        }

        //创建一个局部内部类对象
        Inner inner = new Inner(); // Inner对象的生命周期比y的生命周期要长
        inner.show();
        }
}
class Demo
{
        public static void main(String[] args) {

        Outer outer = new Outer();
        outer.print();
        }
}

除了上面的说法,有没有更加直白一点的说法?

求教!







作者: l598790586    时间: 2015-5-24 11:19
因为局部变量是存在栈内存中的,方法调用结束就释放了,而内部类的对象是存在堆内存中的,要靠垃圾回收机制回收,如果局部变量不用final修饰的话,可能会出现对象引用了一个不存在的变量
作者: !85684009ex    时间: 2015-5-24 14:27
膜拜大神!
作者: 集体烧书    时间: 2015-5-24 18:31
自己消化过的看着就是更加清晰易懂,必须32个赞
作者: wwl0517    时间: 2015-5-27 08:45
必须点赞!




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