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方法不能被子类的方法复盖,但可以被 ...
随机推荐
- 3.2 使用STC89C52控制MC20发送短信
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- BGP Basic Knowledge
声明: 这篇文章是对网上的这几篇博客的摘录,仅供我自己以后看的时候方便,且不需要再看太多的内容, 如果大家对BGP不是很了解,建议看原博客或者直接看RFC BGP只支持基于目的地址的路由,即路 ...
- source $0 & bash $0
bash file.sh这种形式启动时,$0才被设置成文件名. source是bash的内建命令,把文件读取到当前bash中执行,相当于在当前bash手动输入命令,所以$0是bash. 示例代码如下: ...
- Vim 指令一览表
vim 程序编辑器 移动光标的方法 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键( ...
- Java Web项目在Mac系统上启动时提示nodename nor servname provided
今天一不小心更新了Mac系统,然后在启动Java Web项目的时候,提示了java.net.UnknownHostException: MAC-mini-local nodename nor serv ...
- 02 Spring框架 简单配置和三种bean的创建方式
整理了一下之前学习Spring框架时候的一点笔记.如有错误欢迎指正,不喜勿喷. 上一节学习了如何搭建SpringIOC的环境,下一步我们就来讨论一下如何利用ioc来管理对象和维护对象关系. <? ...
- ubuntu安装java jdk
openjdk安装http://openjdk.java.net/install/ 一.下载 首先,当然是要下载了. 地址:http://www.oracle.com/technetwork/java ...
- 对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间
l 场景 定义一个学生类,包含字段(学号,姓名,语文成绩,数学成绩,英语成绩).属性(总成绩).三个方法分别为(求平均分.数学平均分.语文平均分). 要求:在main()方法中,定义一个学生类型的数 ...
- axios拦截器/http
Interceptors //处理请求或响应之前拦截请求或响应. //添加一个请求拦截器 axios.interceptors.request.use(function (config) { //在请 ...
- QT线程
一.QObject子类 说明:以串口线程传输文件为例子,使用的是MoveTothread函数. void QObject::moveToThread(QThread *targetThread)可以将 ...