所以final从语法上约束了实际上两个不同变量的一致性(表现为同一变量). 我的理解: 例如这样的代码: public void test(String str){ str="abc"; } 其实执行完毕了,执行的只是原来str的一个镜像文件,根本不会影响原来的变量. 内部类是属于外部类的一个组件 class Outer{ private String str; class Inner{ public void test(){ System.out.println(str); } }…
在学习多线程的时候用到了匿名内部类,匿名内部类可以访问static静态成员变量或者final修饰的局部变量. 匿名内部类在编译之后会生成class文件,比如Test内的第一个匿名内部类编译之后就是Test$1.class: 匿名内部类中访问的final修饰的局部变量在生成Test$1.class之后会作为构造方法的参数传入class中;如果匿名内部类访问的是另一个类的静态成员变量则直接访问,不会作为构造方法的参数. 1.访问final修饰的局部变量 局部变量需要是final修饰,如果访问方法参数…
2.当内部类中还有一个内部类,下面给出了一个实例.[新手可忽略不影响继续学习](以下多出代码, 用蓝色标记)例2.2:class ShellMark_to_win {    int shell_x = 100;//马克-to-win:既然每个内部类实例都可以改变这里的外层类静态属性或实例属性,这里成为内部类实例们可以交互的地方    static int n;    void visitCore() {        Core core = new Core();        core.y=8…
1.变量类型: a.定义: 和C++差不多,就是: type identifier [ = value][, identifier [= value] ...]: type为Java数据类型.identifier是变量名.可以使用逗号隔开来声明多个同类型变量.可以声明但不赋值. b.类变量(静态变量)static variable: 独立于方法之外的变量,用 static 修饰. 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝. 静态变量在第一次被访问时创建,在程序结束时销毁.与实例变量具…
反射修改字段 咱们从最简单的例子到难, 一步一步深入. 使用反射修改一个private修饰符的变量name 咱们回到主题, 先用反射来实现一个最基础的功能吧. 其中待获取的name如下: public class Pojo { private StringBuilder name = new StringBuilder("default"); public void printName() { System.out.println(name); } } 接下来咱们 使用反射来修改上面n…
内部类 14.1内部类概念 将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类.其他类也称为外部类. 内部类分为成员内部类与局部内部类. 我们定义内部类时,就是一个正常定义类的过程,同样包含各种修饰符.继承与实现关系等.在内部类中可以直接访问外部类的所有成员. 14.2成员内部类 成员内部类,定义在外部类中的成员位置.与类中的成员变量相似,可通过外部类对象进行访问 格式: class 外部类 { 修饰符 class 内部类 { //其他代码 } } 外部…
本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部变量,说明这个内部类不是在类中定义的内部类,而是在方法中定义的内部类,称之为:局部内部类. 局部变量的作用域:局部变量是在某个方法中定义,当该方法执行完成后,局部变量也就消失了.[局部变量分配在JVM的虚拟机栈中,这部分内存空间随着程序的执行自动回收],也即:局部变量的作用域是在 “方法的范围内”.…
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,…
目录 Java中final修饰的数据 有初始值的final域 final+基本数据类型 final+引用数据类型 final与static final 空白final域 final修饰的参数 基本数据类型的参数 引用数据类型的参数 Java中final修饰的数据 final是Java中的一个重要关键字,它可以修饰数据.方法和类,本篇将从final修饰的数据角度对final做出总结. final修饰的数据代表着:永远不变.意思是,一旦你用final修饰一块数据,你之后就只能看看它,你想修改它,没门…
1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的,下面来看一个错误案例. eg: final class Penguin { } class SubPenguin extends Penguin { } 此时这段代码的class SubPenguin extends Penguin这行代码会报错: The type SubPenguin canno…