1.static关键字
static关键字修饰的变量表示该变量为该类的所有对象共有。static修饰的方法表示类的方法,通过类名直接可以调用该方法。
static 修饰的代码块可以让类刚加载到内存的时候就执行该代码块。
我们来看一下如下代码及执行结果:
StaticDemo类:
package StaticFinalTransient;
public class StaticDemo {
public static String nameString="xyp";
public static int count=0;
private String ageString;
static {
count++;
System.out.println("静态代码块执行!"+count);
}
public static void printInfo(){
System.out.println("静态方法!");
}
public StaticDemo(String age){
this.ageString=age;
}
public String getAgeString() {
return ageString;
}
public void setAgeString(String ageString) {
this.ageString = ageString;
}
}
MainApp类:
package StaticFinalTransient;
public class MainApp {
public static void main(String agrs[]){
StaticDemo.printInfo();
StaticDemo s=new StaticDemo("18");
s.nameString="北半球先生";
StaticDemo t=new StaticDemo("20");
System.out.println(t.nameString);
}
}
运行结果如下:
从运行结果看来,证实了static修饰变量,代码块及方法的功能。
2.Final关键字
Final 顾名思义就是不可再修改的,通常Final和Static 组合使用来定义一些常用的常量。Final比较简单就不再赘述了。
3.transient关键字
transient 比较少见。transient 修饰的变量表示短暂的,不可以被序列化的。
来看如下代码:
package StaticFinalTransient;
import java.io.Serializable;
/**
* Person实现Serializable接口
*/
public class Person implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private transient String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
//setter 和 getter方法
@Override
public String toString()
{
return "Peron [name=" + name + ", password=" + password + "]";
}
}
//通常如果想要将一个对象持久化存储到磁盘中,那么通常是先将该对象序列化然后再存储。
package StaticFinalTransient;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Test {
public static void main(String agrs[]) throws FileNotFoundException, IOException, ClassNotFoundException{
File file = new File("e:/out.txt");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
Person person=new Person();
person.setName("北半球先生");
person.setPassword("123");
out.writeObject(person);
out.flush();
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
Person outPerson = (Person) in.readObject();
in.close();
System.out.println(outPerson.toString());
}
}
运行结果如下: