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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值