敲了一年多的JAVA,也该是时候回去梳理下以前学的不是很透彻的知识点了。先从简单的来,从static说起。
关于static,在英文里的意思是静态的。在java里,可以修饰代码块,可以修饰属性,也可以修饰方法。
修饰代码块:
public class StaticStr {
static{
System.out.println("修饰代码块");
}
}
修饰方法:这个看main方法就好
修饰属性:
public class StaticStr {
public static String str = "Bint";
}
这里主要说下static修饰属性时的应用。
static修饰属性目的就是为了让这个属性在所有的这个类的实例中都是唯一的一个。说白的了也就是只要在任何一个这个类的实例中修改了它属性的值,其他的实例也会被修改。程序如下:
ps:其中StaticStr类就是上面的StaticStr类
public class Invoking {
public static void main(String[] args) {
StaticStr str = new StaticStr();
StaticStr str2 = new StaticStr();
str.str = "csdn";
System.out.println("str:" + str2.str);
}
}
输出的结果是str:csdn。
这种特性让它应用在地方,如在连接数据库的时候,一般而言,一个数据库的连接的各个参数都是唯一的。所以我们一般都吧这些参数都是用static描述的,如:
import java.sql.*;
public class DBConnection {
private static final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String DBURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=GMS";
private static final String DBUSER = "gms";
private static final String DBPASSWORD = "gms";
private Connection conn = null;
public DBConnection() throws Exception{
Class.forName(DBDRIVER);
this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
}
public Connection getConnection(){
return this.conn;
}
public void close() throws Exception{
if(this.conn!=null){
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
staic还用在安卓的开发的过程中,比如定义一种颜色。比如黑色的rgb为#000000。我们可以定义:
public class Color {
public static String black = "#000000";
public static String red = "#ff0000";
}
到后面我们可以使用Color.black来引用这个颜色了。如:
Theme类:
public class Theme {
public void setThemeColor(String color){
System.out.println("设置了颜色");
}
}
引用的时候就是:
public class CreateTheme {
public static void main(String args[]){
Theme theme = new Theme();
theme.setThemeColor(Color.black);
}
}
个人总结:static修饰属性时,很像c语言里面的全局变量。