设为首页 加入收藏

TOP

Java 回顾 ( Revisiting Java )(二)
2018-01-09 06:06:36 】 浏览:332
Tags:Java 回顾 Revisiting
于类,不属于任何对象,但对象可以获得它。
类的静态变量由(该类的)所有对象所共享。
静态方法通过类名调用,静态变量通过类名存取 。
如果类只有静态方法,则可以将构造函数标记为private的,以免被初始化

Java常量 = final static 的变量
final意味着不能被改变,static意味着是静态变量。

插一句字符串的格式化:
String.format(格式化说明)
格式化说明包括5部分,%和type是必要的
%[argument number] [flags] [width] [.precision] type
如: %,6.1f 为6位逗号分隔,1位小数的浮点数

谈谈异常吧,谁能保证自己的程序不出问题呢?与其系统运行的时候报一大堆乱七八糟的错误trace,早早地预见并处理一下,以自己的方式处理或者打印它,总要漂亮些吧?甚至可以在抓到异常后,给出“没关系,一个小错误,已经报告给开发者~”这样温和的语句,是不是显得b格很高?……
异常中要注意的点有:
可能会抛出异常的方法必须声明成throws Exception
catch捕获多个异常时,要从小排到大,因为大异常后面的小异常根本没有被catch的机会
在方法后加上throws xxException,没有try/catch块,表示可能会抛出异常,自己并不处理,需要调用方自己处理异常
所以>>>要么处理,要么声明(异常)

序列化对象:有时候需要保存一下对象,以便于恢复,被调用,而不用重新生成,因为生成过程可能很麻烦。
要序列化的话,对象必须可序列化,且对象中实例变量所引用的对象甚至对象引用的对象…都必须可以序列化,简而言之,整个对象版图都必须可以序列化
如果某实例变量不需要或者不能被序列化,那可以把它标记为transient(瞬时)的。
解序列化时,transient变量会恢复成null对象引用或者0,false等primitive默认值
静态变量不会被序列化,对象被还原时,静态变量会维持类中原本的样子。因为所有对象共用一份静态变量。
读取对象的顺序必须与写入的顺序相同

序列化对象:

FileOutputStream fileStream = new FileOutputStream("MySer.ser")
ObjectOutputStream os = new ObjectOutputStream(fileStream)
os.writeObject(obj)
os.close()

或者不序列化,而是将信息写入文本文件:

BufferedWriter writer = new BufferedWriter(new FileWriter(file))  // file is a File object
writer.write(...)

可以把File想象成文件的路径,代表磁盘上的某个文件,但并不是文件内容

BufferedWriter writer = new BufferedWriter(new FileWriter(file))  // file is a File object

这句代码形成如下链接:

字符串 --> BufferedWriter --> FileWriter --> File

对象序列化以后,类继续演进,这时会出现无法还原的情况。通过将serialVersionUID放在class中,让类在演化过程中维持同样的ID,可以保证还原的时候能够识别,从而正确还原出对象。但要注意有些修改会损害解序列化。

好吧,先说到这,其实还有一些内容,网络,集合与泛型,以及许多高级特性,反射,虚拟机的深入理解等等,后面再说吧。

Reference
*《Head First Java》

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何编写相对标准的后端项目 (一.. 下一篇一次 Maven 事故

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目