第六章 字符串、I/O、格式化与解析

1.使用StringStringBuilderStringBuffer

(1)       String对象是不可变的,String引用变量不是

(2)       如果创建了新的String而没有给它赋值,则对程序来说它将丢失

(3)       如果将String引用重定向到新的String,则旧的String可能丢失

(4)       除了substring()的第二个变元外,String方法使用基于0的索引

(5)       String类是最终类——其方法不能被重写

(6)       JVM发现String字面值时,就将它添加到String字面值池中

(7)       String有一个名为length()方法,数组有一个名为length的属性

(8)       StringBufferAPIStringBuilderAPI相同,StringBuffer的方法并未针对线程安全进行同步

(9)       StringBuilder的方法应该运行得比StringBuffer的方法更快

(10)   以下各项同时适用于StringBufferStringBuilder:A.它们都是可变的,无需创建新对象即可改变它们B.StringBuffer方法作用于调用对象上,无需再语句中显示赋值即可改变对象C.StringBufferequals()方法没有被重写,它不比较值

(11)   记住链式方法是从左至右计算的

(12)   要记住的String方法有:charAt()concat()equalsIgnoreCase()length()replace()substring()toLowerCase()toString()toUpperCase()trim()

(13)   要记住的StringBuffer方法有:append()delete()insert()reverse()toString()

2.文件I/O

(1)       Java.io中需要理解的类有:FileFileReaderBufferedReaderFileWriterBufferWriter以及Console

(2)       新的File对象并不意味着在硬盘驱动器上有新的文件

(3)       File对象可以表示文件或目录

(4)       File类允许管理(添加、重命名或删除)文件和目录

(5)       createNewFile方法和mkdir()方法用于添加条目到文件系统中

(6)       FileWriter类和FileReader类是低级I/O.可使用它们读写文件,但通常应包装它们

(7)       Java.io中的类被设计成链接的包装的”(装饰模式的常见用法)

(8)       BufferedReader”包装FileReader周围,或将BufferedWriter”包装FileWriter周围,它们用于获得对更高级/方便方法的访问

(9)       PrintWriter可用于包装其它Writer,但从Java5,它们可以直接从FileString构建

(10)   Java5PrintWriter具有新增的append()format()printf()方法

(11)   Console对象能读取不回显的输入,是通过使用System.console()实例化的

3.序列化

(1)       需要理解的类都在java.io包中,它们包括:ObjectOutputStreamObjectInputStream,以及FileOutputStreamFileInputStream,因为要通过它们创建ObjectXxxStream类将使用的低级流

(2)       在可以序列化一个类的对象之前,该类必须实现Serializable接口

(3)       ObjectOutputStream.writeObject()方法用于序列化对象,ObjectInputStream.readObject()方法用于反序列化对象

(4)       如果将一个实例变量标识为transient,它将不会被序列化,即使将对余下的对象状态进行序列化也是如此

(5)       可以通过实现writeObject()readObject()方法来补充类的自动序列化过程。如果这样做,defaultReadObject()defaultWriteObject()的嵌入式调用将处理常规的序列化任务部分

(6)       如果一个超类实现了Serializable,那么它的所有子类也是如此

(7)       如果超类没有实现Serializable,那么在反序列化一个子类对象时,将会运行非序列化的超类的构造函数

(8)       DataInputStreamDataOutputStream了解

4.日期、数字和货币

(1)       需要理解的类有:java.util.Datejava.util.Calendarjava.text.DateFormatjava.text.NumberFormat以及java.util.Locale

(2)       Date类的大多数方法都已经不建议使用了

(3)       Date被保存成long,它是从197011日起到现在的毫秒数

(4)       Date对象是Calendar类和Locale类之间的媒介

(5)       Calendar提供了一组用于操作日期的强大方法,可以执行诸如获取星期几,也可添加月数或念书或其它增量到日期中之类的任务

(6)       使用静态工厂方法getInstance()创建Calendar实例

(7)       应该理解的Calendar方法包括add()roll(),前者允许添加或减去多个日期成分(分钟、天数、年数等),后者的工作方式与add()类似,但不会递增日期的较大部分(例如:添加10个月到October日期中会将月份变成August,但不会递增Calendar的年度值)

(8)       DateFormat类中有多种格式样式可用

(9)       可针对不同地区应用DateFormat样式,以便为任何给定的日期创建一组广泛的输出

(10)   DateFormat.format()方法用于创建包含有正确格式化日期的字符串

(11)   Locale类与DateFormatNumberFormat一起使用

(12)   DateFormat对象和NumberFormat对象都可以用特定的、不可变的Locale类来构造

(13)   对于SCJP考试,应理解使用语言或使用语言和国家的组合来创建Locale

5.理解、分解和格式化

(1)       Regex是正则表达式的简写,它用于在大型数据源中查找数据的模式

(2)       正则表达式是存在于Java及其它语言中的子语言

(3)       正则表达式允许使用字面值字符或元字符创建模式.元字符允许查找稍微抽象一些的数据,数字空白

(4)       研究:”\d””\s””\w””.”等元字符

(5)       正则表达式提供一些量词,它们可用来指定像在一行中寻找1个或多个数字这样的概念

(6)       ?、*+ 等贪婪量词

(7)       Notice:元字符和字符串不能很好的混合,除非正确的转义它们。如:String s = “\\d“;

(8)       Pattern类和Matcher类具有Java的最强大的正则表达式能力

(9)       理解Patter类的compile()方法以及Matcher类的matches()pattern()find()start()group()方法

(10)   可使用java.util.Scanner执行简单的正则表达式查找,但它主要用于分解

(11)   分解是将定界的数据分裂成小段数据的过程

(12)   在分解过程中,想得到的数据称为标记,分隔标记的字符串称为定界符

(13)   可利用Scanner类或利用String.split()执行分解

(14)   定界符可以是单一字符(如逗号)或者复杂的正则表达式

(15)   Scanner类允许从一个循环内外分解数据,它允许随时停止分解

(16)   Scanner类允许分解字符串、流或文件

(17)   String.split()方法将会立即分解整个数据源,因此大量的数据处理起来可能相当慢

(18)   Java5中新增了两个方法用于格式化输出的数据,它们是format()printf().可以在PrintStream类中找到这两个方法,这个得一个实例是System.out中的out

(19)   format()方法和printf()方法具有相同的功能

(20)   printf()format()格式化的数据是利用与基本类型或字符串变元有关的格式字符串完成的

(21)   format()方法允许将字面值混合在格式字符串中

(22)   应该知道的格式字符串值有如下的类:A标志:-+0(B.转换:bcdfs;

如果转换字符与变元类型不匹配,就会抛出一个异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值