java中的静态代码块、构造代码块、普通代码块和同步代码块总结

java中的4中代码块总结如下:

* 加了static的是静态代码块,在类中写了一对{}是构造代码块,在方法中写了一对{}是普通代码块,

* java中还有一种代码块是同步代码块,常用在多线程中, synchronized关键字,

* 同步代码块格式是:synchronized(同步对象){}

* 静态代码块 先于构造代码块 先于构造方法执行

* 静态代码块 先于普通代码块 先于构造方法执行

* 构造代码块和普通代码块按照程序逻辑顺序执行

package 面试题;

class HelloA{
	public HelloA() {
		System.out.println("构造方法 A");
	}
	//直接在类中定义的没有加static关键字的代码块{}称为构造代码块
	//这是构造代码块,而且在new对象时,构造代码块优先构造方法执行
	{
		System.out.println("I`m A class");
	}
	//使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化
	//静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!
	static{
		System.out.println("static A");
	}
}

//同步代码块主要出现在多线程中。
public class HelloB extends HelloA{
	public HelloB() {
//		super();//默认省略了这个调语句
		System.out.println("构造方法 B");
	}
	//构造代码块
	{
		System.out.println("I`m B class");
	}
	//静态代码块
	static{
		System.out.println("static B");
	}
	public static void main(String[] args) {
		//直接在一个方法中出现的{}就称为普通代码块
		//普通代码块
		{
			System.out.println("main方法中的普通代码块1");
		}
		new HelloB();
		//普通代码块
		{
			System.out.println("main方法中的普通代码块2");
		}
	}
}

output:

static A

static B

main方法中的普通代码块1

I`m A class

构造方法 A

I`m B class

构造方法 B

main方法中的普通代码块2

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 00:34:48

java中的静态代码块、构造代码块、普通代码块和同步代码块总结的相关文章

java中的静态代码块,构造代码块,构造函数,普通代码块

java中的静态代码块,构造代码块,构造函数,普通代码块 静态代码块: 格式: public class Test1{ static{ System.out.println("这是一个静态代码块");  } } 说明: 1.静态代码块在类加载时也就是项目启动时运行并且只运行一次相当于main函数,有多个静态代码块从上往下依次执行,他是一种主动运行的机制. 2.静态代码块不能存在于任何方法中 构造代码块 格式: public class Test2{ { System.out.print

Java中的静态变量、静态方法、静态代码块

转载自http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法.要实现这样的效果,只需要在类中定义的方法前加上static关键字.例如: public static int maximum(int n1,int n2) 使用类的静态方法时,注意:a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的

java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)

import java.util.concurrent.locks.*; class DuckMsg{ int size;//烤鸭的大小 String id;//烤鸭的厂家和标号 DuckMsg(){ } DuckMsg(int size, String id){ this.size=size; this.id=id; } public String toString(){ return id + " 大小为:" + size; } } class Duck{ private int

Java中的静态代理、通用动态代理类以及原理剖析

代理模式和静态代理 在开发中,代理模式是常用的模式之一,一般来说我们使用的代理模式基本上都是静态代理,实现模式大致如下 : 我们以网络代理为例,简单演示一下静态代理的实现 : // 网络接口 interface Network { public void surfTheInternet(); public void gotoFacebook(); } // 普通网络 class CommonNetwork implements Network { @Override public void su

Java中的静态变量和静态函数

Java中的静态变量和静态函数(方法)和C++中也类似.有几点需要重新复习一下: 1)如果想让一个类的所有对象共享数据,可以使用静态变量:如果想共享函数,可以使用静态函数. 2)如果某个对象修改了静态变量的值,那么该类的所有对象都会受到影响. 3)静态变量和静态函数在类创建对象之前就可以调用,这点和普通的变量函数很不一样. 4)常量可以声明为final static,所有对象都共享. 5)访问一个类的静态变量和静态函数,一般都使用"类名.静态变量"或者"类名.静态函数&quo

Java中的静态代码块和构造代码块

最近一在回顾Java中的一些知识,这里跟大家一起学习一下静态代码块,和构造代码块. 首先,代码就是巴拉巴拉一些定义呀,赋值啊,运算的一些java代码,用两个大括号括起来,就变成了神奇的代码块 { a=3; } static{ b=4; } 就像上面那个样子. 括号加了static修饰就变成了静态代码块,大家记住哦,只要加了static这个东西只后,后面那个东东就是静态的,而且只能操作静态的东东. 比如静态方法,静态变量,静态指针,当然java里没有指针. 然后我用了一个小代码去理解这两个概念,上

关于Java中的静态代码块

一.静态代码块 ①特点:随着类的加载而执行,且只执行一次,不管创建了多少次对象实例,这个类中的静态代码块只会在第一次创建类实例或者直接使用类名调用静态方法时执行一次,且若第一次是使用类名调用静态方法,则会先执行静态代码块后才会执行相应方法.(这也说明创建类实例或者使用类名调用静态方法时,类都会被加载进内存).如果是StaticCode s=null;这样的声明语句,类是不会被加载入内存中的. ②功能:用于给类初始化(不是对象) 二.静态方法:①若只是创建含有静态方法的类的对象而没有调用静态方法,

java中的静态变量,静态方法与静态代码块详解

java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象. 静态变量有两种情况: 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用 静态变量是一个引用.这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它. 因此如果

java中的静态初始化块

Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 我们来看一段代码: 运行结果: 通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法.由于静态初始化块只在类加载时执行一次,所以当再次创建对