越来越喜欢深究java基础了,讲讲 transient  和static 对序列化的影响。废话少说,直接上代码就可以了

  1. package serializable;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class User implements Serializable {
  6. private String name;
  7. private transient String password; // 被transient修饰的变量
  8. private static String age;
  9.  
  10. public User() {
  11. super();
  12. }
  13.  
  14. public String getName() {
  15. return name;
  16. }
  17.  
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21.  
  22. public String getPassword() {
  23. return password;
  24. }
  25.  
  26. public void setPassword(String password) {
  27. this.password = password;
  28. }
  29.  
  30. public static String getAge() {
  31. return age;
  32. }
  33.  
  34. public static void setAge(String age) {
  35. User.age = age;
  36. }
  37.  
  38. }
  1. import java.io.FileInputStream;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6.  
  7. public class Test {
  8. public static void main(String[] args) throws Exception {
  9. // User user = new User();
  10. // user.setAge("22");
  11. // user.setName("小明");
  12. // user.setPassword("admin");
  13. // System.out.println(user.getAge()+"\t"+user.getName()+"\t"+user.getPassword());
  14. // ObjectOutputStream oos = new ObjectOutputStream(new
  15. // FileOutputStream("e:/user.txt"));
  16. // oos.writeObject(user);
  17. // oos.flush();
  18. // oos.close();
  19. //
  20. // ObjectInputStream ois = new ObjectInputStream(new
  21. // FileInputStream("e:/user.txt"));
  22. // User users = (User) ois.readObject();
  23. //
  24. // System.out.println(users.getAge()+"\t"+users.getName()+"\t"+users.getPassword());
  25. // User user = new User();
  26. // user.setAge("22");
  27. // user.setName("小明");
  28. // user.setPassword("admin");
  29. // System.out.println(user.getAge()+"\t"+user.getName()+"\t"+user.getPassword());
  30. // ObjectOutputStream oos = new ObjectOutputStream(new
  31. // FileOutputStream("e:/user.txt"));
  32. //
  33. // oos.writeObject(user);
  34. // oos.flush();
  35. // oos.close();
  36.  
  37. ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:/user.txt"));
  38. User users = (User) ois.readObject();
  39.  
  40. System.out.println(users.getAge() + "\t" + users.getName() + "\t" + users.getPassword());
  41.  
  42. }
  43. }

运行截图贴上

第二次的代码运行截图,一目了然,

从运行结果可以看出用  transient 修饰的变量在反序列化后值为 null

被static修饰的变量应该也是不会被序列化的,因为只有堆内存会被序列化.所以静态变量会天生不会被序列化。也是null.

Java -----transient 和static的更多相关文章

  1. java:transient是什么,有什么作用

    参考博客:Java transient关键字 “Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机 ...

  2. Java基础之static关键字的用法

    Java中的static关键字主要用于内存管理.我们可以应用static关键字在变量.方法.块和嵌套类中. static关键字属于类,而不是类的实例.        静态(static)可以是: 变量 ...

  3. (转)Java中的static关键字解析

    转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...

  4. 关于Java中的static关键字

    Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...

  5. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  6. java中的static使用--静态变量、静态方法

    Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...

  7. (转)Java中的static关键字解析

    转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...

  8. Java中的static的使用

    Java中的static使用之静态变量 神话丿小王子的博客主页 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象 ...

  9. java中的static详解

    如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象.static 成员的最常见的例子是main( ) .因为在程序开始执行时必须调用main() ,所以它被声 ...

随机推荐

  1. CodeForce--Benches

    A. Benches   There are nn benches in the Berland Central park. It is known that aiai people are curr ...

  2. 天气API接口的使用

    最近项目中使用到了天气预报的功能,需要从网上获取天气数据,然后显示在公司系统的页面上. 在这里和大家分享下我的做法,希望能对大家有所帮助,如果有错误,欢迎大家指正. 先给大家看看效果: 下面开始进行讲 ...

  3. SPOJ 375 树链剖分 QTREE - Query on a tree

    人生第一道树链剖分的题目,其实树链剖分并不是特别难. 思想就是把树剖成一些轻链和重链,轻链比较少可以直接修改,重链比较长,用线段树去维护. 貌似大家都是从这篇博客上学的. #include <c ...

  4. Hive学习笔记(三)-- DML和DDL操作

    01-Hive表的DDL操作--修改表 创建一个分区表并加载数据 查询数据 修改表 加载数据 查询一下 另外一个命令查询表的分区 如何删除一个分区呢 查询一个,分区被删除了 修改表名 查询改名的新表的 ...

  5. 国际化多语言(本地化)缩写 NLS API

    NLS Information for Windows 7 LCID Culture Identifier Culture Name Locale Language Country/Region La ...

  6. IO Streams:缓冲流

    我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...

  7. Unity3D - UGUI组件的中英文对照

  8. hibernate基础工具findBySQL学习

    public List<Map<String,Object>> findBySQL(String sql,Map<String,Object> param,int ...

  9. kb-07线段树-03--区间修改查询--lazy思想

    /* 区间修改,区间查询和: 第一次使用lazy思想: poj3468 */ #include<iostream> #include<cstdio> #include<c ...

  10. jQuery全屏滚动插件fullPage.js使用中遇到的问题(滑动轮播效果无效)

    1.fullPage.js是什么? fullPage.js 是一个基于 jQuery ,用来制作全屏网站的插件. 2.兼容性: - jquery兼容:兼容 jQuery 1.7+ - 浏览器兼容: I ...