`
郑云飞
  • 浏览: 823306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

静态代码块

阅读更多
//Cartoon.java
//初始化及类的装载

class Art {
  Art() {
    System.out.println("Art constructor");
  }
  static
	{
	  System.out.println("art");
	}
}

class Drawing extends Art {
  Drawing() {
    System.out.println("Drawing constructor");
  }
   static
	{
	  System.out.println("Drawing");
	}
}

public class Cartoon extends Drawing {
  Art a=new Art();
  Drawing d=new Drawing();
  Cartoon() {
    System.out.println("Cartoon constructor");
  }
   static
	{
	  System.out.println("Cartoon");
	}
  public static void main(String[] args) {
        Cartoon x =null; 
		x=new Cartoon();
  }
} 

 

class Value
{
	static int c = 0;
	int value;
	static
	{
		c = 15;
		increase();
	}
	Value()
	{
		System.out.println("Value()");
		System.out.println(Static3.i);
		c = 3;
	}
	Value(int i)
	{

		System.out.println("Value(int i) i=" + i);
		c = i;
	}
	static void increase()
	{
		System.out.println("increase()");
		c++;
	}

	public void setValue(int i)
	{
		value = i;
	}
}
class Static2
{
	static int i;
	static Value v1, v2;
	Value v = new Value(1);
	public static void prt(String s)
	{
		System.out.println(s);
	}
	static
	{
		System.out.println("ok");
	}
	static
	{
		prt("Static block");
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v1 = new Value(5);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v2 = new Value(6);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	public static void main(String[] args)
	{
		prt("main");
		Static2 sta = new Static2();
		Static2 ct = new Static2(); 
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v1.increase();
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	static
	{
		System.out.println("ok");
	}
}

 

/**
 * Static3 关于static变量和static方法
 */
class Value
{
	// 整型类成员变量
	static int c = 0;
	int value;
	static
	// 静态代码块
	{
		c = 15;
		increase();
	}
	// 构造方法
	Value()
	{
		System.out.println("Value()");
		System.out.println(Static3.i);
		c = 3;
	}

	// 构造方法
	Value(int i)
	{

		System.out.println("Value(int i) i=" + i);
		c = i;
	}

	// 类成员方法
	static void increase()
	{
		System.out.println("increase()");
		c++;
	}

	public void setValue(int i)
	{
		value = i;
	}
}

class Static3
{
	static int i;
	// 共有类方法,简化输出函数
	public static void prt(String s)
	{
		System.out.println(s);
	}
	// 成员变量v是Value类的实例的引用变量,是Static3类的实例成员变量
	Value v = new Value(1);
	// v1和v2是Static3类的类成员变量
	static Value v1, v2;
	// 静态代码块,
	/*
	 * 一个类中可以使用不包含在任何方法体中的静态代码块(static block), 当类被载入时,
	 静态代码块被执行; 静态代码块只执行一次;
	 * 静态代码块经常用来进行类属性的初始化
	 */
	static
	{
		System.out.println("ok");
	}
	static
	{
		prt("Static block");
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		
		v1 = new Value(5);
		//v1.setValue(100);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v2 = new Value(6);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}

	public static void main(String[] args)
	{
		// d = 10;
		prt("main");
		Static3 sta = new Static3();
		// sta.d = 10;
		Static3 ct = new Static3(); // 创建一个Count类的实例,其引用是ct
		// Count类的实例的成员变量v的成员变量c
		prt("ct.v.c=" + ct.v.c);
		// Count类的成员方法main调用Count类的成员变量v1和v2
		// 注意:类方法只能调用类变量
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		// Count类的成员变量v1的成员方法inc
		v1.increase();
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	static
	{
		System.out.println("ok");
	}
}

 

分享到:
评论

相关推荐

    java 静态代码块通过类加载器获取资源文件例子

    在Java编程中,静态代码块(Static Block)和类加载器(Class Loader)是两个重要的概念,它们在软件开发中有着广泛的应用。本案例聚焦于如何利用静态代码块结合类加载器来高效地获取资源文件,尤其是属性配置文件。...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...

    java静态代码块与非静态代码块参照.pdf

    Java 静态代码块与非静态代码块详解 Java 中的代码块可以分为静态代码块和非静态代码块两种,两者的执行时机和作用域不同。本文将通过实例代码和详细解释,阐述 Java 静态代码块与非静态代码块的区别和应用场景。 ...

    java静态代码块与非静态代码块.doc

    Java 静态代码块与非静态代码块 Java 中的静态代码块和非静态代码块是两个重要的概念,它们在 Java 中的应用非常广泛。下面我们来详细介绍这两个概念。 静态代码块 静态代码块是 Java 中的一种特殊的代码块,它是...

    Java的静态代码块、非静态代码块、构造函数

    Java编程语言中,静态代码块、非静态代码块和构造函数是面向对象设计的重要组成部分,它们在类的初始化和对象创建过程中起到关键作用。本文将深入探讨这些概念,以及它们在实际开发中的应用。 首先,我们来理解静态...

    java 代码块与静态代码块加载顺序

    Java 代码块与静态代码块加载顺序详解 Java 代码块与静态代码块加载顺序是 Java 语言中一个重要的概念,理解这两个概念对于编写高效、可靠的 Java 代码至关重要。本文将详细介绍 Java 代码块与静态代码块加载顺序的...

    Java静态代码块作用及执行顺序解析

    在继承关系中,静态代码块的执行顺序是:父类静态代码块 -> 子类静态代码块 -> 父类非静态代码块 -> 父类构造方法 -> 子类非静态代码块 -> 子类构造方法。 静态代码块和静态方法的区别在于:静态代码块是自动执行的...

    Java 普通代码块静态代码块执行顺序(实例讲解)

    这里我们将深入探讨Java中的普通代码块(实例初始化块)和静态代码块的执行顺序,并通过实例来阐述这一概念。 首先,我们需要明白两种类型的代码块: 1. 静态代码块(Static Block):这些代码块在类加载时执行,...

    有关static block静态代码块和单态设计模式

    在Java编程语言中,`static`关键字用于声明类级别的成员,包括静态变量和静态代码块。静态代码块,也就是`static block`,是Java中的一种特殊构造,它不包含在任何方法内,当类被加载时,静态代码块会被自动执行且仅...

    构造代码块和静态代码块的执行时机.xmind

    构造代码块和静态代码块的执行时机

    课堂笔记08(静态代码块-继承-对象构造-方法重写-关键字

    【标题】中的“静态代码块-继承-对象构造-方法重写-关键字”涉及的是Java编程语言中的核心概念。下面将分别对这些知识点进行详细解释。 1. 静态代码块:在Java中,静态代码块是一段用花括号{}包围的代码,前面有...

    Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    Java编程语言中有三种类型的代码块,它们分别是普通代码块、构造代码块和静态代码块,每种都有其特定的用途和执行顺序。 1. **普通代码块**: 普通代码块(也称为局部代码块)是在方法或者类的成员变量声明之间...

    Java:静态代码块和构造函数执行顺序

     1 静态变量,静态代码块(类加载时执行,类不加载不执行)  2 实例变量,实例代码块(创建对象时才执行,不创建对象不执行)  3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private...

    关于Java中静态代码块的执行浅析

    Java中静态代码块的执行浅析 Java中的静态代码块是一种特殊的代码块,它们是在类加载过程中执行的,而不是在对象创建时执行的。静态代码块的执行是自动的,且只执行一次。在Java中,静态代码块的执行是static关键字...

    Java静态代码块加载驱动代码实例

    Java静态代码块加载驱动代码实例 Java静态代码块是一种特殊的代码块,它可以在类加载时被执行,该代码块只能被加载一次,无论new多少个对象。静态代码块通常用来加载配置文件、初始化操作等。 在Java中,静态代码...

    day08 15 静态代码块

    day08_15_静态代码块

    Java中的static静态代码块的使用详解

    Java中的静态代码块是类级别的代码,它在类被加载到JVM(Java虚拟机)时执行,且只执行一次。这些代码块主要用于初始化类级别的变量,即静态变量。与静态方法不同,静态代码块是自动执行的,而静态方法需要通过类名...

    JAVA基础面试题1,包含静态资源,final关键字,静态代码块等相关知识

    包含静态资源,final关键字,静态代码块等相关知识

Global site tag (gtag.js) - Google Analytics