Java关键字static、final、transient详解

来源:互联网 发布:软件开发的标准规范 编辑:程序博客网 时间:2024/05/16 23:35

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());  }}

运行结果如下:






0 0
原创粉丝点击