一。一个简单的例子
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("*****成功!*****");
}
}