`
lg_asus
  • 浏览: 190123 次
  • 性别: 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没用的。

相关推荐

    java final变量详解

    Java final 变量详解 Java 中的 final 变量是指不能被改变的变量,它有三个方面的作用:修饰变量、修饰方法和修饰类。...但是,final 变量的使用也需要遵守一定的规则,例如变量的初始化顺序、内存分配方式等。

    深入理解final变量的初始化

    以下是对`final`变量初始化的详细分析: 1. **定义时初始化**: `final`变量可以在定义时直接赋值,这是最常见的方式。例如: ```java final int a1 = 1; ``` 这里的`a1`在定义时就被赋予了初始值1,之后不能...

    java程序初始化顺序

    在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    java初级视频教程系列之-java初始化

    7. **final变量初始化**:final变量一旦被赋值,就不能再改变。如果final变量引用的是对象,那么对象的内容可以改变,但引用本身不能改变。 8. **匿名内部类初始化**:在Java中,可以创建没有名字的内部类,它们...

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

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

    Java中final的深度剖析

    final关键字也可以用于方法内的局部变量,这使得变量一旦初始化就不能再次赋值。例如: ```java public static String testMethod(final String suffix) { final String key = "prev" + suffix; return key; }...

    java代码初始化流程研究

    Java代码的初始化流程是编程者在开发过程中需要深入了解的关键环节,它涉及到类加载、静态变量初始化、构造函数执行等多个步骤。下面将详细讲解这个过程。 首先,Java代码的执行始于类加载。当程序运行时,Java...

    java 常量与变量

    在Java编程语言中,常量和变量是两个基础且重要的概念。...合理地声明、初始化和使用常量与变量,能帮助我们编写出清晰、可维护的代码。在实际编程中,还需根据需求选择合适的数据类型,并注意变量的作用域和生命周期。

    【Java编程教程】详解Java final 关键字.pdf

    如果`final`变量在声明时没有赋值,那么它被称为“空白最终变量”或“未初始化的final变量”。这样的变量必须在构造函数中进行初始化,或者对于静态的`final`变量,可以在静态初始化块中初始化。例如: ```java ...

    局部变量用final的讨论

    1. **不可变性**:当`final`用于局部变量时,确保该变量一旦被初始化后,就不能再改变其值。这有助于维护代码的稳定性和安全性,特别是在多线程环境中,防止意外修改。 2. **匿名内部类与final**:在Java中,如果一...

    Java final关键字

    当一个变量被声明为`final`时,它的值一旦被初始化后就不能再改变。这适用于局部变量、成员变量(包括静态变量)以及方法参数。例如: ```java public class FinalDemo { final int constant = 10; // final成员...

    java中final和static的区别

    1. final 修饰变量:表示该变量一旦被初始化,程序无法修改变量的值,该变量变成了一个常量。注意,系统不会默认为它初始化,只有两种初始化的方式:在定义处和构造方法中对其初始化。 2. final 修饰方法中的参数...

    Java中的final关键字

    - `final`修饰的局部变量一旦初始化后,就不能再改变其值。这有助于防止意外修改,增加代码的可预测性和安全性。 - 类级(静态)常量通常也用`final`修饰,例如`public static final`,这样的变量被称为常量,如...

    C++和Java初始化顺序的比较代码

    本篇文章将深入探讨C++和Java中变量和成员初始化的差异,并通过具体的代码示例进行对比。 在C++中,初始化顺序遵循以下规则: 1. 静态成员变量:无论它们在哪里定义,静态成员变量都按照声明的顺序初始化。 2. 非...

    final变量.

    变量初始化优先于任何方法,包括构造函数。静态变量在类加载时初始化,然后是静态代码块,接着是非静态变量和非静态代码块,最后是构造函数。 6. **内联优化和多态**: `final`方法能够被编译器进行内联优化,...

    javafinal和static总结.docx

    final 变量定义的时候,可以先声明,而不给初值,这中变量也称为 final 空白,无论什么情况,编译器都确保空白 final 在使用之前必须被初始化。 二、static 关键字 static 关键字在 Java 中用于修饰变量和方法,...

    java_中的_final_变量[文].pdf

    对于成员变量,`final`变量在构造函数中或初始化块中赋值,静态`final`变量则通常在类加载时初始化。如果未显式赋值,系统会赋予默认值,例如`int`类型的默认值是0。`final`变量的内存分配与其他变量不同,常量保存...

    深入理解Java中的final关键字_动力节点Java学院整理

    6. 未初始化的 `final` 变量被称为“空白 final 变量”,在编译时必须赋值。 了解这些 `final` 关键字的知识点对于编写高效、安全的 Java 代码至关重要,特别是在设计不可变类和保证代码行为不变性时。通过正确使用...

    java工程师找工作中面试遇到的专业知识问题总结.pdf

    * final 变量的初始化:final 变量必须由程序员显示初始化,系统不会对 final 变量进行隐式初始化。 二、Spring 框架 * @Autowired 和 @Resource 的区别:@Autowired 按 byType 自动注入,而 @Resource 默认按 by...

    java中final关键字和static关键字详细用法

    实例级别的`final`变量则属于每个对象实例,它们的值在对象创建时初始化,之后不能再改变。 现在我们来看`static`关键字。`static`修饰符用于表示类级别的成员,这些成员与类本身相关联,而不是类的实例。这意味着...

Global site tag (gtag.js) - Google Analytics