- 浏览: 568616 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
fiwrc:
知道了. 谢谢~!
\(^_^)/ Java多线程Master-Worker模式 -
fiwrc:
求问 getResultMap 是什么方法???? .. ...
\(^_^)/ Java多线程Master-Worker模式 -
我改名了:
...
\(^_^)/ 表达式解析器(MVEL) -
拓子轩:
赞一个
Oracle 语句大全 -
rudaoxia:
写的很详细,很好,还有很多的拓展,谢谢博主,收下了
\(^_^)/ JDK工具、命令
子类的实例化主要分为两个步骤:
<1>.类相关静态内容 初始化;
*先父类再子类:
1.父类的static属性;
2.父类的static块;
3.子类的static属性;
4.子类的static块;
<2>.类的实例内容 初始化;
*调用构造子:先父类后子类:构造子调用之前先实例化实例字段和块
5.父类的普通属性;
6.父类的普通块;
7.父类的构造子;
8.子类的普通属性;
9.子类的普通块;
10.子类的构造子;
例子:
package basic;
public class ClzInit {
public static void main(String[] args) {
new Son();
}
}
class Parent {
protected int n = 5;
protected static int m = 5;
static {
m = m * 2;
System.out.println("父类静态块调用; m="+m);
}
{
n = n * 2;
m = m * 2;
System.out.print("父类普通块调用;");
System.out.print("n="+n);
System.out.println(" m="+m);
}
public Parent() {
this.n = n * 10;
m = m + 10;
System.out.print("父类构造子; n="+n);
System.out.println(" m="+m);
}
}
class Son extends Parent {
private int sn=3;
private static int sm=3;
static {
m = m + 2;
sm=sm+2;
System.out.println("子类静态块调用; m="+m);
}
{
n = n + 2;
sn=sn+2;
m = m + 2;
System.out.println("子类普通块调用;");
System.out.print("n="+n);
System.out.print("sn="+sn);
System.out.println(" m="+m);
}
public Son() {
this.n = n + 10;
sn=sn+10;
m = m + 10;
System.out.print("子类构造子;n="+n);
System.out.println(" m="+m);
}
}
* 1.父static域
* 2.父static块
* 3.子static域
* 4.子static块
* 5.父普通域
* 6.父普通块{}
* 7.父构造子
* 8.子普通域
* 9.子普通块{}
* 10.子构造子
package nie.test.extend;
/** 子构造子的初始化过程:
* @author dotjar
* 1.父static域
* 2.父static块
* 3.子static域
* 4.子static块
* 5.父普通域
* 6.父普通块{}
* 7.父构造子
* 8.子普通域
* 9.子普通块{}
* 10.子构造子
*/
public class Test {
public static void main(String[] args) {
new Son("s");
}
}
class Father {
static protected String s = "father_static_property_string"; //1
protected String b = "father_normal_property_string"; //5
static {
s = "o"; //2
System.out.print("d");
System.out.print(s);
}
{
b="r"; //6
System.out.print("a");
System.out.print(b);
}
Father() {
this("@");
System.out.print("1"); //8
}
Father(String s) {
System.out.print(s); //7
}
}
class Son extends Father {
public static String s = "son_static_property_string"; //3
public String b = "son_normal_property_string"; //9
static {
s = "j"; //4
System.out.print("t");
System.out.print(s);
}
{
b = "3"; //10
System.out.print("6");
System.out.print(b);
}
Son() {
System.out.print("."); //11
}
Son(String s) {
this();
System.out.print("com"); //12
}
}
1.父类的静态成员与静态初始化块,按照出现的顺序
2.子类的静态成员与静态初始化块,按照出现的顺序
3.父类的实例成员与实例初始化块,按照出现的顺序
4.父类的构造方法
5.子类的实例成员与实例初始化块,按照出现的顺序
6.子类的构造方法
1.父类--静态变量
2.父类--静态初始化块
3.子类--静态变量
4.子类--静态初始化块
5.父类--变量
6.父类--初始化块
7.父类--构造器
8.子类--变量
9.子类--初始化块
10.子类--构造器
下面是一个类中的静态变量、变量以及构造函数的初始化顺序。
Java代码
public class InitialOrderTest
{
public static String staticField = "静态变量";
public String field = "变量";
static
{
System.out.println(staticField);
System.out.println("静态初始化块");
}
{
System.out.println(field);
System.out.println("初始化块");
}
public InitialOrderTest()
{
System.out.println("构造器");
}
public static void main(String[] args)
{
new InitialOrderTest();
}
}
//**********************
//输出结果为;
//**********************
//静态变量
//静态初始化块
//变量
//初始化块
//构造器
下面是子类和父类中静态变量、变量以及构造函数的初始化顺序。
Java代码
public class InitialOrder extends Parent
{
public static String s_StaticField = "子类--静态变量";
public String s_Field = "子类--变量";
static
{
System.out.println(s_StaticField);
System.out.println("子类--静态初始化块");
}
{
System.out.println(s_Field);
System.out.println("子类--初始化块");
}
public InitialOrder()
{
System.out.println("子类--构造器");
}
public static void main(String[] args)
{
new InitialOrder();
}
}
class Parent
{
public static String p_StaticField = "父类--静态变量";
public String p_Field = "父类--变量";
static
{
System.out.println(p_StaticField);
System.out.println("父类--静态初始化块");
}
{
System.out.println(p_Field);
System.out.println("父类--初始化块");
}
public Parent()
{
System.out.println("父类--构造器");
}
}
//**********************
//输出结果为;
//**********************
//父类--静态变量
//父类--静态初始化块
//子类--静态变量
//子类--静态初始化块
//父类--变量
//父类--初始化块
//父类--构造器
//子类--变量
//子类--初始化块
//子类--构造器
发表评论
-
Java 设计模式和设计原则
2017-12-22 15:00 0http://java-design-patterns.c ... -
jeesite,jeeplus,jeecg,jfinal
2017-12-21 19:43 0jeesite,jeeplus,jeecg,jfinalh ... -
batch scheduler
2017-08-10 18:19 0batch scheduler -
statsd+graphite+grafana 监控
2016-09-27 14:58 0https://my.oschina.net/u/138210 ... -
spring boot admin server
2016-09-02 17:17 0关键词:Spring boot 监控、Spring Boo ... -
资料备份
2016-07-22 17:29 0微服务 -
spring cloud
2016-07-17 22:03 0spring cloud http://blog. ... -
oschina_git_java 开源项目
2016-04-22 17:21 0项目 描述 JFinal / JFinal ... -
Mybatis Generator 配置文件
2016-04-08 15:44 693<?xml version="1.0&quo ... -
Java中的Object类
2015-08-03 09:53 662package java.lang; ... -
\(^_^)/ Java 反射
2015-05-17 15:49 1124http://blog.csdn.net/libo2006 ... -
Maven中的pom.xml文件
2015-05-14 23:01 12003http://blog.csdn.net/adeyi/ar ... -
Eclipse中的.project文件、classpath文件
2015-05-14 22:58 2902<?xml version="1.0&qu ... -
eclipse中的.classpath文件
2015-05-14 22:40 102.classpath的位置定义了你这个项目在编译时所使用的 ... -
TreadLocal xxx
2015-04-09 23:06 0ThreadLocal是什么 早在JD ... -
\(^_^)/ Servlet、Filter、Listener、Interceptor
2015-01-13 15:49 1338参考:http://thinkerandthinker.i ... -
\(^_^)/ 表达式解析器(MVEL)
2014-10-21 22:08 12219Jeval 在运行时解析计算静态和动态表达式;支持数学, ... -
\(^_^)/ POI读写海量Excel
2014-10-13 19:50 2552转自:http://blog.csdn.net/goodku ... -
\(^_^)/ Java8 源码目录结构
2014-06-27 22:45 631├─com │ └─sun ... -
\(^_^)/ eclipse 插件、注释模版、配置
2014-06-06 15:53 3235Eclipse 插件 1. Fi ...
相关推荐
类--初始化块"); 39. } 40. // 构造器 41. public SubClass() { 42. System.out.println("子类--构造器"); 43. } 44. 45. public static void main(String[]...因此,掌握类的初始化顺序是每个Java开发者必备的知识点。
以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**: - **加载**:当Java虚拟机(JVM)首次遇到一个类的引用时,会通过类加载器进行加载。加载过程包括找到类的.class文件,读取其字节码,并转化为内存中...
当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...
详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。
然而,在涉及到类继承时,一个重要的问题是类实例化时的初始化顺序。本篇文章将围绕“类继承的初始化顺序”这一主题展开,详细解析初始化过程中涉及的关键概念和技术细节。 ### 类继承的初始化顺序概述 在面向对象...
Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...
总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...
### Java中类的初始化顺序详解 #### 一、概述 在Java编程语言中,类的初始化是一个非常重要的概念。类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文...
"Java 对象初始化顺序学习指南" 在学习 Java 编程语言时,对象初始化顺序是一个非常重要的知识点,但是许多学生却感到困惑和困难。事实上,Java 对象初始化顺序并不难理解,只需要掌握“礼让”原则和 JVM 的执行...
Java 初始化顺序详解 在 Java 中,变量可以分为两类:类变量(静态变量)和实例变量(对象变量)。类变量是使用 static 关键字修饰的变量,它们属于类,而不是对象。实例变量则是没有使用 static 关键字修饰的变量...
总之,深入理解Java的ClassLoader机制和类变量初始化顺序是提升Java编程技能的重要步骤。通过学习这些知识点,开发者可以更好地优化代码、设计更健壮的系统,并解决与类加载和初始化相关的复杂问题。
在Java中,类的初始化顺序是一个经常被问及的面试题目,尤其对于Java程序员和工程师来说,了解这个知识点是必须的。在Java中,类的初始化顺序是面试中的经典问题之一,它涉及到继承、静态成员以及实例成员等多个方面...
### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...
总之,类的初始化顺序是:静态成员 -> 静态初始化块 -> 非静态成员 -> 非静态初始化块 -> 构造器。这个顺序同样适用于继承关系,只是会先初始化父类的部分,再初始化子类的部分。掌握这一知识能帮助程序员更好地设计...
在Java中,初始化顺序则有所不同: 1. 基本类型的静态字段和引用类型的静态字段(如果它们是常量,即final且已初始化):这些字段在类加载时按声明顺序初始化。 2. 静态初始化块:当类第一次被加载时执行,按块的...
### 类初始化顺序详解 本文将基于给定的Java示例代码深入探讨类初始化的顺序问题。这不仅是Java语言的关键特性之一,在其他面向对象语言(如C++、.NET)中也有相似的概念。理解这一概念有助于程序员更好地掌握面向...
JAVA面试题解惑系列(一)——类的初始化顺序 JAVA 是一门面向对象的编程语言,类的初始化顺序是 JAVA 程序员和 JAVA 工程师面试中一个非常重要的知识点。本文将详细讲解类的初始化顺序,并提供了相关的测试代码,...