`

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("*****成功!*****");
	}
}
 

 

 

 

 

分享到:
评论
发表评论

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

相关推荐

Global site tag (gtag.js) - Google Analytics