`
bingzhen66
  • 浏览: 36367 次
文章分类
社区版块
存档分类
最新评论

方法中的内部类能不能访问方法中的局部变量,为什么

 
阅读更多
 * 能,
 * 
 * 内部类是在类中的类,它的位置相对于这个类来说同其他的方法和属性一样。
 * 既可以在方法位置上也可以在方法中。
 * 方法中的内部类就是所谓的局部内部类。
 * 
 * 方法被调用时,它里面的局部变量“诞生”,方法结束时,局部变量“死亡”;
 * 局部内部类的对象只有在不被引用的时候才“死亡”。
 * 非常可能的是局部内部类对象的生命周期比局部变量的声明周期要长,
 * 那么局部内部类对象没法调用已经“死亡”了的局部变量。
 * 
 * 解决的方法是局部变量加上final,
 * 编译成灰会把局部内部类要调用的final变量变成该局部内部类的一个成员,
 * 放入堆中。
 * 局部变量生命周期同这个工程的声明周期相同,
 * 这时候局部内部类就可以调用这个生命周期比自己大的局部变量了。


分享到:
评论

相关推荐

    Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释.doc

    Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释.doc

    Java实例变量、类变量、局部变量

    类变量是类中的静态变量,是用static修饰的变量;实例变量就是类中的成员变量,没有用static修饰的。 类变量是所有对象公用的,实例变量是对象私有的;当一个对象将类变量进行修改...局部变量,即定义在方法内部的变量。

    局部内部类访问外边的局部变量---马克-to-win java视频

    局部内部类访问外边的局部变量 马克-to-win java视频的介绍

    Python语言基础:局部变量和全局变量.pptx

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。 对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用...

    函数的全局和局部作用域和变量-作用域.html

    函数的变量和作用域 /全局变量和全局作用域指的是变量或者函数的位置 ... // 局部作用域:任何一个函数的内部都有一个局部作用域,在局部作用域中定义的变量 局部变量。局部变量只有在定义该变量的函数中可以访问

    PHP函数 -变量的作用域.ppt

    * PHP函数 -----变量的作用域 课程内容 局部变量 全局变量 静态变量 变量的作用域 变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中才可以被使用,这个作用范围称为变量的作用...

    Python变量在函数中的作用域.md

    Python中局部变量的声明和作用范围; 嵌套函数中的局部变量的作用范围; 如何在函数内部访问外层函数的变量。 能学到什么 通过阅读本文,您将学会以下内容: 在编写Python函数时如何正确声明和使用局部变量; 嵌套...

    深入理解Java?内部类

    什么是内部类?  内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附...  (3)、内部类声明成静态的,不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。

    测量程序编制 - python A2面向对象-类实例变量与局部变量.pptx

    面向对象——类实例变量与局部变量;实例变量指的是在任意类方法内部,以“self.变量名”的方式定义的变量,其特点是只作用于调用方法的对象。另外,实例变量只能通过对象名访问,无法通过类名访问。;上面程序中,...

    【05-面向对象(下)】

    在外部类内部使用内部类-不要在外部类的静态成员中使用非静态内部类,因为静态成员不能访问非静态成 员。 • 2.在外部类以外使用非静态内部类。  –private 修饰的内部类只能在外部类内部使用。  –在外部...

    PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法...除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。然而,在 PHP 函数内部声

    Student.java

    1:局部内部类还可以访问成员变量 2:静态内部类可以访问外部类的所有成员和方法 3:成员内部类可以访问外部类的所有属性和方法 OutputStream抽象类中的方法 abstract void write(int n) 写出一个字节的数据 ...

    java日常词汇学习

     Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。  Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    为什么要重载? 168 7.5.3 给汽车加个重载的方法 169 7.5.4 测试一下 169 7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    为什么要重载? 168 7.5.3 给汽车加个重载的方法 169 7.5.4 测试一下 169 7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数...

    Java学习笔记(必看经典)

    此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。 This.number表示实例变量。 谁调用this.number那么谁即为当前(this)对象的number方法。 封装:使对象的属性尽可能私有,对象的方法尽可能的...

    Java学习笔记-超强笔记

    实例变量的作用域至少在本类内部,受访问控制符的限制。 在重合作用域,实例变量和局部变量允许有命名冲突,“局部优先”。 定义方法: 格式: [ 修饰符 ] 返回类型 方法名( 参数列表 ) [ throws ...

    day022-jdk8新特性和lambda表达式 代码和笔记.rar

    1. lambda: 1. 概念:就是对函数式接口匿名内部类的简写 ... 7、lambda表达式若访问了局部变量,则局部变量必须是final的, 若是局部变量没有加final关键字,系统会自动添加,此后在修改该局部变量,会报错;

    Python语言基础:作用域.pptx

    Python的作用域一共有4种,分别是:L(Local):最内层,包含局部变量,比如一个函数/方法内部。E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又...

    测量程序编制 - python 91函数-作用域(局部变量).pptx

    局部变量(Local Variable):在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了。 当函数被执行时,Python 会为其分配一块临时的存储空间,所有在函数内部定义的变???,都会存储在这块空间...

Global site tag (gtag.js) - Google Analytics