`

java 静态块 非静态块

    博客分类:
  • java
阅读更多

一。一个简单的例子

1. 所有静态的(无论其是变量还是块)都按顺序执行.

2. 所有的非静态的块都在静态的(无论其是变量还是块)后执行.

3. 所有的块(无论是静态的还是非静态的)都在构造之前执行.

4. 静态块在类被加载到内存后就开始执行

5. 非静态块是在创建对象时,构造之前被调用

 
public class TestStaticMode {
	public TestStaticMode() {
		System.out.println("in structure");
	}

	static int i = 0;

	{
		System.out.println("in first no static i=" + i);
	}

	static {
		i = 1;
		System.out.println("in static i=" + i);
	}

	{
		System.out.println("in second no static i=" + i);
	}

	public static void main(String args[]) {
		TestStaticMode testStaticMode = new TestStaticMode();
		System.out.println("i=" + i);

	}
}
 




输出为:
in static i=1
in first no static i=1
in second no static i=1
in structure
i=1

 


二。Java使用静态块读取属性(.properties)文件代码

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/*
 * author * 使用静态类读取属性文件
 */
public class StaticConnectionDB {
	private static Properties property = new Properties();
	private static final String Driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	private static String Url = "jdbc:microsoft:sqlserver://";
	static {
		/**
		 * * 通过 字节流 的方式来加载一个properties属性文件,是通过系统自动去检索。 * *
		 * 所以要把属性文件创建在跟本类在同一个包。(第一种方法)
		 */
		// 第一种方法
		// InputStream is=null;
		// is=StaticConnectionDB.class.getResourceAsStream("sqlDB.properties");
		try {
			// 第二种方法
			Reader is = null;
			is = new FileReader("WEB-INF/sqlDB.properties");
			property.load(is);
			is.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
		}
	}

	/**
	 * * 数据库连接 *
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName(Driver);
			// jdbc:microsoft:sqlserver://192.168.0.198:1433;DatabaseName=eTransPortal
			Url = Url + property.getProperty("SqlConectionDB.address") + ":"
					+ property.getProperty("SqlConectionDB.port")
					+ ";DatabaseName="
					+ property.getProperty("SqlConectionDB.dbName");
			System.out.println("***&&&&&**"
					+ property.getProperty("SqlConectionDB.userName") + "=="
					+ property.getProperty("SqlConectionDB.password"));
			System.out.println("***&&&&&**"
					+ property.getProperty("SqlConectionDB.address") + "=="
					+ property.getProperty("SqlConectionDB.dbName"));
			conn = DriverManager.getConnection(Url, property
					.getProperty("SqlConectionDB.userName"), property
					.getProperty("SqlConectionDB.password"));
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}

	/***************************************************************************
	 * * 关闭数据库连接 *
	 * 
	 * @param con *
	 * @param pstmt *
	 * @param rs
	 */
	public void closeAll(Connection con, PreparedStatement pstmt, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		if (pstmt != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		getConnection();
		System.out.println("*****成功!*****");
	}
}
 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java 静态块实例块构造器调用

    在Java继承体系中,子类会继承父类的非私有成员,包括静态块、实例块和构造器。调用顺序如下: 1. **静态块的执行顺序**:首先,从父类到子类,按照定义的顺序依次执行静态块。这意味着父类的静态块先于子类的静态...

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

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

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

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

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    4. **非静态块执行**:所有非静态块按它们在源代码中出现的顺序依次执行。 5. **构造函数调用**:调用类的构造函数完成对象的初始化。 #### 三、示例分析 接下来,我们将通过题目给出的代码示例来进一步说明这个...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    JAVA程序:静态块代码

    在Java编程语言中,静态块(Static Block)是一种特殊的代码段,用于初始化类级别的静态变量。它是类加载时执行的,且只执行一次。在理解静态块之前,我们需要先了解类加载的过程和静态变量的概念。 静态变量是属于...

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

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

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    Java基础练习题练习下静态块的用处

    4. **作用域**:静态块中的代码不依赖于类的实例,因此它不能访问非静态成员,除非通过类名引用。 ### 静态块的用途 1. **静态变量初始化**:静态块常用于初始化静态变量,确保它们在任何实例化之前已经赋值。 ```...

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

    Java静态代码块作用及执行顺序解析 Java静态代码块是Java语言中的一种特殊代码块,它们在类加载的时候执行,且只执行一次。它们通常用来初始化静态变量、设置静态变量的初始值等。静态代码块的作用域是整个类,而...

    java中静态与非静态的区别

    ### Java中静态与非静态的区别 #### 一、静态类与非静态类 在Java中,**静态类**与**非静态类**有着明显的区别: 1. **成员组成**: - **静态类**只能包含**静态成员**和**静态方法**。这意味着你无法在静态类中...

    Java中的静态变量静态方法静态块与静态类.docx

    ### Java中的静态变量、静态方法、静态块与静态类 #### 一、静态变量 静态变量,也称为类变量,是定义在类中方法之外的,并且被`static`关键字修饰的变量。这类变量并不属于类的任何实例,而是属于类本身。这意味...

    Java静态和非静态成员变量初始化过程解析

    Java静态和非静态成员变量初始化过程解析 Java静态和非静态成员变量初始化过程解析是Java语言中一个非常重要的概念。了解Java静态和非静态成员变量的初始化过程对大家的学习或者工作具有一定的参考学习价值。 首先...

    java-静态变量方法块

    在Java编程语言中,静态变量、静态方法、静态代码块以及非静态变量和非静态方法是核心概念,它们对于理解和编写Java程序至关重要。下面将详细解释这些概念,并通过实例程序来阐述它们的使用和内存管理。 首先,静态...

    Java static静态初始快

    1. **执行顺序**:静态初始化块在非静态初始化块之前执行。当类第一次被加载时,JVM会按照它们在源代码中的顺序执行静态初始化块。 2. **类加载机制**:Java类的加载是懒加载的,即只有在类被首次使用时,JVM才会...

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

    而非静态代码则在类的使用阶段(也是实例化一个类的时候)才会被初始化。  静态变量  可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。  静态变量有两种情况:  ● 静态...

    静态代码块

    静态代码块与实例代码块(非静态代码块)的主要区别在于它们的执行时机以及作用范围。 - **执行时机**:静态代码块在类加载时执行,而实例代码块则是在创建对象时执行。 - **作用范围**:静态代码块作用于整个类的...

    java中静态代码块与构造方法的执行顺序判断

    4. 初始化非静态变量。 5. 执行构造代码块(如果有的话)。 关于方法重写(Override)和重载(Overload): - 重载发生在同一类中,方法名相同,但参数列表不同(参数类型、个数或顺序不同)。 - 重写发生在父类和...

    学习java静态数据初始化.doc

    在 Java 中,静态变量的初始化过程可以被分为三个阶段:静态初始化、非静态初始化和执行构造函数。静态初始化是指在类加载时对静态变量的初始化。非静态初始化是指在实例创建时对实例变量的初始化。执行构造函数是指...

    java技术:java中static作用详解

    - 静态方法不能访问非静态的成员变量和方法,因为它们与特定的对象关联。静态方法只能访问静态成员变量和静态方法。 - 静态方法不能使用`this`关键字,因为它指向的是当前实例,而静态方法不与实例关联。 - 静态...

Global site tag (gtag.js) - Google Analytics