`
lg_asus
  • 浏览: 184305 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java final变量的初始化问题

 
阅读更多
二、JAVA类加载顺序

JAVA类加载顺序:

1).按代码顺序递归加载静态成员/代码块,先父类再本类;

 

2).按代码顺序递归加载非静态成员/代码块,先父类再本类;

 

3).按代码顺序递归调用构造函数,先父类再本类;

 

 

JAVA类加时机:

1).调用静态成员时,加载静态成员所在的类及父类;

 

2).第一次new对象时加载(第二次new不再加载)

 

3).加载子类会先加载父类.有static和final修饰的成员不会被加载;当成常量使用;
link:http://www.hake.cc/a/biancheng/ruanjian/java/2011/0914/14333.html



public class Child extends Parent{
	public final int age = 12;
	
	@Override
	public void init() {
		System.out.println(age);
	}

	public Child(){
		
	}
	public static void main(String...args){
		Child c = 
				new Child();
		System.out.println(c.age);
	}
}

class Parent{
	public void init(){
		System.out.println("init in Parent");
	}
	
	public Parent(){
		this.init();
	}
}

这里输出的都是12,但调试的时候显示第一个是0。不知道为什么,哪位牛人知道请告知,谢谢。
分享到:
评论
1 楼 lxb_champagne 2013-03-27  
this.init(); 

类都没初始化好,this没用的。

相关推荐

    深入理解final变量的初始化

    本篇文章是对final变量的初始化进行了详细的分析介绍,需要的朋友参考下

    Static和Final修饰类属性变量及初始化

    1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.

    Java并发--final关键字.docx

    在Java中变量可以分为成员变量和局部变量 成员变量 通常每个类中成员变量可以分为 类变量(static修饰的变量) 以及 实例变量 针对这两种类型的变量...当final变量未初始化时系统不会进行隐式初始化,会出现报错。

    Java零基础-final关键字.md

    了解final关键字的一些规则,如final变量的初始化、final方法的重写和final类的继承等。 阅读建议: 建议读者在阅读前具备Java的基础知识,包括类、对象、方法和变量等概念。 在阅读过程中,尝试编写简单的Java程序...

    【Java语言基础】final关键字

    类变量:当类初始化时,系统会为类变量分配内存,并赋默认值。 实例变量:当创建对象时,系统会为该对象的实例属性分配内存,并赋默认值。 final修饰局部变量 可以在定义时指定默认值,则后面代码中不能再对改变量...

    java基础非常典型的面试题目.wps

    final型的静态变量必须在定义处或者在静态代码块中被显式初始化。 2. 局部变量的初始化 局部变量必须在使用之前做显式初始化。如果编译器能够确认一个局部变量在使用之前可能没有被初始化,编译器将报错。 如果...

    Java中的final关键字详解及实例

    如果修饰的是引用类型的变量,那么初始化后就不能让他指向另一个对象,如下图所示 2.修饰方法 用final关键字修饰的方法是不能被该类的子类override(重写),因此,如果在想明确禁止 该方法在子类中被覆盖的情况下...

    关于Java的几个经典问题

    1.类的初始化顺序 2.到底创建了几个String对象(三)——变量(属性)的覆盖 (四)——final、finally和finalize的区别 (五)——传了值还是传了引用(六)——字符串(String)杂谈 (七)——日期和时间的处理 ...

    Java 基础核心总结 +经典算法大全.rar

    类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...

    Java的六大问题你都懂了吗

     本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。  1. 类的属性,或者叫值域  2. 方法里的局部变量  3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始...

    JAVA基础知识精华总结 收藏

    不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时 未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。 2、 继承时,对象的初始化过程 (1) 主类的超类...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    创建对象包括声明、实例化和初始化三方面的内容。通常的格式为 : 1. 声明对象 对象声明实际上是给对象命名,也称定义一个实例变量。对象声明的一般格式为: type name 其中,type 是一个类的类名,用它声明的对象将...

    Java面试32个经典问题 .doc

    其初始化可以在两个地方:一是其定义处,也就是说在final变量定义时直接给其赋值;二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给...

    Java经典面试题.pdf

    静态关键字用于修饰类的成员(方法、变量、代码块),使其在类加载时被初始化,并且可以通过类名直接访问。静态成员属于类本身,而不是类的实例。静态方法无法访问非静态成员。 4.什么是Java的final关键字? final...

    java 编程入门思考

    4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 ...

    JAVA面试题解惑系列合集

    1.1 JAVA面试题解惑系列(一)——类的初始化顺序 1.2 JAVA面试题解惑系列(二)——到底创建了几个String对象? 1.3 JAVA面试题解惑系列(三)——变量(属性)的覆盖 1.4 JAVA面试题解惑系列(四)——final、...

    疯狂JAVA讲义

    6.4.1 final变量 177 6.4.2 final方法 181 6.4.3 final类 182 6.4.4 不可变类 182 6.4.5 缓存实例的不可变类 186 6.5 抽象类 188 6.5.1 抽象方法和抽象类 188 6.5.2 抽象类的作用 191 6.6 更彻底的抽象:...

    Java初学者入门教学

    4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 ...

    Java关键字总结

    一旦引用被初始化指向一个对象,就无法再把它指向另一个对象。 3>final方法:一是把方法锁定,以防止继承类修改它的含义,二是确保继承中使方法行为保持不变,并且不会被覆盖。类中所有的private方法都隐式地指定为是...

Global site tag (gtag.js) - Google Analytics