java static代码段 2

class B static
class A static
Class A main
Class B create
class A create
Class B create

解释:执行顺序为   B类(父类)静态代码 -> A类(子类)静态代码 -> A类的主函数main -> B类构造函数 -> A类构造函数 ->   B类构造函数

注意了,静态代码段只执行了一次!  这跟继承中的构造函数是不一样的!

public class A extends B {
static {
System.out.println("class A static");
}
public static void main(String[] args) {
System.out.println("Class A main");
new A();
new B();
}
A() {
System.out.println("class A create");
}
}

public class B {
static {
System.out.println("class B static");
}
B() {
System.out.println("Class B create");
}
}

public class A extends B {
static {
System.out.println("class A static");
}
public static void main(String[] args) {
System.out.println("Class A main");
new A();
new B();
}
A() {
System.out.println("class A create");
}
}

时间: 2024-10-07 05:01:57

java static代码段 2的相关文章

java static代码段

1)java中还有个static代码块的形式,形式为 static {……}.static代码块是类定义的一部分,仅仅在类被初次加载的时候被调用一次,之后再调用不会再加载.那么类什么时候首次被加载呢?就是在主类中(包含main函数的类)new一个对象实例(包含static代码段的类没有main函数)或者此类有main函数,那么在进入main函数的时候首次加载此类,加载类的时候初始化顺序如下:如有父类,则按照静态成员.静态代码段.静态方法.一般成员.父类构造函数的顺序初始化父类,然后是子类的初始化

JAVA中代码段的执行顺序

我记得刚毕业那时候,学习JAVA最怕的就是这儿了,关于这的JAVA题,我一向都做不对.今天终于复习到这了,看了好半天,得赶紧把刚才学习到的那点东西记下来. 一.关于static的代码段执行顺序 执行结果如下: Cup(1) Cup(2) Cups() Cups() Inside main() f(99) 二.关于非static得代码段执行顺序 执行结果如下: Inside main() Mug(1) Mug(2) c1 & c2 initialized Mugs() Mug(1) Mug(2)

定位Java运行时 代码段方法

1.搜索java进程  ps -ef | grep java 2.查看进程的线程 top -p 17620 -H 3.打出进程的执行堆栈 jstack 17620 > 1.txt 4.识别线程号 5.查看线程执行的代码段 说明在执行a.main方法!!! (at a.main(a.java:15))

Java static变量与代码块

static是用来修饰成员变量和成员方法,也可以形成静态static代码块. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 它方便了在没有创建对象的情况下使用,如math类的使用,main方法的使用. 特点: package com.company; /* case_01被所有

Java多线程编程6--单例模式与多线程--使用静态内置类、(反)序列化、static代码块、enum枚举数据类实现

前面讲的用DCL可以解决多线程单例模式的非线程安全,虽然看下去十分完美,但还是有一些问题,具体分析看这篇:http://blog.csdn.net/ochangwen/article/details/51348078 当然用其他的办法也能达到同样的效果. 1.使用静态内置类实现单例模式 public class Singleton { /* 私有构造方法,防止被实例化 */ private Singleton() { } /* 此处使用一个内部类来维护单例 */ private static c

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

Java static和final

java提高篇(七)-----关键字static static 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概念,在Java中static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量.数组和对象的引用,堆内存主要存放一些对象.在JVM加载一个类的时候,若该类存在static修饰的成员变量和成员方法

Java笔试--代码纠错

package practice.javase; public abstract class Name { private String name; public abstract boolean isStupidName(String name){}; } 错误:编译无法通过,原因抽象方法不能有方法体:改正,将抽象方法改为普通方法,或去掉方法体: package practice.javase; public abstract class Name { private String name;

java static那些事

 staic变量是怎么样执行的? public class Client {public static int i = 0;static {  i = 100;}public static void main(String[] args) {  System.out.println(i);}} 这段程序很简单,输出100,那么下面稍微修改下,代码如下: public class Client { static {  i = 100; } public static int i = 0; publ