首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 基础(1)

2012-12-21 
Java 基础(一)异常通常由 jvm 抛出或者程序员 api 抛出。 断言 ?????? 通常用来检查希望发生或者不希望发生

Java 基础(一)

异常通常由 jvm 抛出或者程序员 api 抛出。

断言

?????? 通常用来检查希望发生或者不希望发生的事情,主要用于 debug 。非常简单版本和简单版本。 Assert 后面必须是 boolean 值,第二个表达式是一个字符串,产生调试信息。

?????? 默认禁用断言。启用断言: java –ea ;禁用断言: java –da ;可以有选择的启用或者禁用断言。

?????? 不要使用断言对程序产生副作用。

String , StringBuffer , StringBuilder

String 是不可改变的对象,和基本类型相似。是 final 的,不可以被继承。创建 String 时首先会 check 常量池中是否已经有,如果有则将引用指向已经存在的字符串,否则在常量池中创建字符串,引用指向新字符串。

?????? String s=”hello”;???? // 创建一个对象,一个引用

?????? String s=new String(“hello”); // 创建两个对象 ( 一个在堆中,一个在常量池中),一个引用。

?????? StringBuiler :非线程安全。 StringBuffer :线程安全。建议多使用 StringBuilder ,这样性能更加好。

文件

File

字符读写类

FileReader/FileWriter :构造函数 File , String

BufferReader/BufferWriter: 构造函数: Writer

PrintWriter :构造函数 File , String , OutputStream , Writer

串行化

ObjectOutputStream.writeObject();

OjbectInputStream.readObject();

串行化会自动串行化被引用的变量。如果引用变量的类型没有实现序列化则会有运行时异常: NotSerializableException 。如果引用变量的类型实现了序列化,引用类型被自动序列化。

标识为 transient 字段不被序列化,反串行化时被默认初始化赋值。 Static 字段不被序列化。

使用 readObject ()和 writeObject ()自己实现串行化操作。反串行化不会调用构造函数。

继承和串行化:

父类没有实现 Serializable 。子类反串行化时,继承的父类变量将被默认赋值而不是串行化期间所具有的值,因为父类的默认构造函数将会被调用,因此父类一定要定义默认无参数构造函数,否则反串行化不成功 。

?

热点排行