java关键字---final和transient
首先,说说final。
final关键字可以修饰变量,方法,类。
private Random rand=new Random();
private static Random random=new Random();
private final int n1=12;
private final int number=rand.nextInt(30);
private static final int NUMBER2=random.nextInt(40);
@Test
public void finalDataTest(){
System.out.println(n1);
System.out.println("--------------------");
System.out.println(rand.nextInt(30));
System.out.println("--------------------");
System.out.println("编译初始之后,不会改变:"+number);
System.out.println("--------------------");
System.out.println("编译初始之后,不会改变:"+NUMBER2); }
/**
* final修饰参数:该参数可读,但无法修改。
* @param sk
* @return
*/
public String finalParam(final String sk){
//sk="jeyson"; final参数不能被修改
return sk; }
public final String finalMethod(){
return "Hello World" ;
}
public final class FinalClassTx {
private int k ;
public void getMyWord(){
System. out .println("这是一个final类,k的值是" +getK());
}
public int getK() {
return k ;
}
public void setK( int k) {
this .k = k;
}
}
然后 transient关键字:
public class TransientEx {
public static void main(String[] args) {
User user=new User();
user.setUsername("jeyson");
user.setPassword("123456");
System.out.println("序列化前:");
System.out.println(" username="+user.getUsername());
System.out.println(" password="+user.getPassword());
//序列化
try {
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("C://MyResource//test1.txt"));
os.writeObject(user);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
//反序列化
try {
ObjectInputStream is=new ObjectInputStream(new FileInputStream("C://MyResource//test1.txt"));
user=(User) is.readObject();
is.close();
System.out.println("序列化后:");
System.out.println(" username="+user.getUsername());
System.out.println(" password="+user.getPassword());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("--------------------------------");
}
}
class User implements Serializable{
private static final long serialVersionUID = 1L;
private String username;
//使用 transient
private transient String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
扩展:Externalizable
实现了serializable接口的类,所以序列化会自动进行
public class ExternalizableEx implements Externalizable {
private transient String name="ssss";
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
name=(String) in.readObject();
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
ExternalizableEx ex=new ExternalizableEx();
ex.setName("jeyson");
System.out.println("Externalizable序列化前:");
System.out.println(ex.getName());
//序列化
try {
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream(new File("C://MyResource//test2.txt")));
os.writeObject(ex);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
//反序列化
try {
ObjectInputStream is=new ObjectInputStream(new FileInputStream(new File("C://MyResource//test2.txt")));
ex=(ExternalizableEx) is.readObject();
is.close();
System.out.println("Externalizable序列化后:");
System.out.println(ex.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
声明:
final大部分来自《java编程思想》第四版
transient相关部分参考自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html
java关键字---final和transient的更多相关文章
- Java关键字final、static
一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...
- 【转】Java关键字final、static使用总结
转自:http://lavasoft.blog.51cto.com/62575/18771/ Java关键字final.static使用总结 一.final 根据程序上下文环境, ...
- Java关键字final、static使用总结
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...
- 转!Java关键字final、static使用总结
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...
- Java关键字final、static使用总结(转)
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...
- (转)Java关键字final、static使用总结
一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. fin ...
- [Java] 关键字final、static使用总结
一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率.final ...
- java 关键字final static native详解
java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...
- Java关键字final、static使用总结(转)
原文链接:Java关键字final, static一些要点 1. final final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被 ...
随机推荐
- boost之字符串与文本处理
C++标准库中字符串转数值使用函数atoi(),数值转字符串使用printf系列函数. boost中使用转换函数操作符lexical_cast<>进行转换,实际上是模板函数.自定义类型,要 ...
- EasyMock 常见异常
1. java.lang.IllegalStateException: calling verify is not allowed in record state 含义:不允许在记录状态(record ...
- IDEA中文出现乱码解决
转自:http://lcl088005.iteye.com/blog/2284696 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都 ...
- Qt核心机制和原理
转:http://blog.csdn.net/light_in_dark/article/details/64125085 ★了解Qt和C++的关系 ★掌握Qt的信号/槽机制的原理和使用方法 ★了解Q ...
- Linux基础四---系统监控&硬盘分区
---恢复内容开始--- 一系统分区 1.top [参数] -b 批处理 -c 显示命令完全模式 -I 忽略失效过程 -s 保密模式 -S 累积模式 -i<时间> 设置间隔时间 -u< ...
- S005SELinux(SEAndroid)的实际文件组成无标题文章
SEAndroid 是将SELinux 移植到Android 上的产物,可以看成SELinux 辅以一套适用于Android 的策略. 那么在android系统中那些文件是与SELinux(SEAnd ...
- Qt如何重写虚函数
eg:QWidget的有个虚函数,KeyPressEvent,当它的子类获得焦点的时候,如果有任何按键按下,就会触发这个虚函数. 1.在mainwindow.h中声明此虚函数 protected:vo ...
- Java 访问修饰符总结
Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口. Java语言采用访问控制修饰符来封装类及类的方法和属性的访问权限,从而向使用者暴露接口.隐藏细节. Java访问控制分为 ...
- 使用Homebrew管理你的mac开发包
很多人可能不了解 Homebrew, 其实它相当于开发软件界的 Appstore. 比如,如果我要安装 python 的最新版本,那么传统的做法是 1. 到官方网站下载 python 的最新版本 2. ...
- 基于主主复制的mysql双机热备+keepalived实现高可用性