一 简单零碎的知识汇总
1)String类重写了HashCode()方法,改为根据字符序列计算HashCode()方法。
2)Object类提供了如下几个方法:
Object类还提供了wait(),notify(),notifyAll()几个方法,用于控制线程的暂停与运行。
Object还提供了一个protected修饰的clone()方法,该方法只能被子类重写或调用。
3)如下程序示范了Objects工具类的用法:
4)BigDecimal类提供了add(),subtract(),multiply(),divide(),pow()等方法对精确浮点数进行常规算数运算。
5)Calendar.MONTH字段代表的月份,月份的起始值不是1,而是0。所以设置8月时,用7而不是8。
6)String类提供如下几个特殊方法使用正则表达式:
7)正则表达式语法:
使用正则表达式:
二 易混淆出错的难点汇总
1)自定义类实现克隆的步骤如下:
注意体会如下示例代码:
class Address
{
String detail;
public Address(String detail)
{
this.detail = detail;
}
}
// 实现Cloneable接口
class User implements Cloneable
{
int age;
Address address;
public User(int age)
{
this.age = age;
address = new Address("广州天河");
}
// 通过调用super.clone()来实现clone()方法
public User clone()
throws CloneNotSupportedException
{
return (User)super.clone();
}
}
public class CloneTest
{
public static void main(String[] args)
throws CloneNotSupportedException
{
User u1 = new User(29);
// clone得到u1对象的副本。
User u2 = u1.clone();
// 判断u1、u2是否相同
System.out.println(u1 == u2); //①
// 判断u1、u2的address是否相同
System.out.println(u1.address == u2.address); //②
}
}
2)关于String,StringBuilder,StringBuffer类。
1.String对象是不可变类,一旦一个String对象被创建,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
2.StringBuffer对象代表一个字符序列可变的字符串,通过append(),insert(),reverse(),setCharAt(),setLength()等方法可以改变 这个字符串对应的字符序列。一旦通过StringBuilder生成了最终想要的字符串序列,就可以调用toString()方法将其转换。
3.StringBuilder与StringBuffer基本相似,两个类构造器和方法也基本相同。不同的是StringBuffer是线程安全,StringBuilder 则没有实现线程安全功能,所以性能略高。
3)创建BigDecimal对象时,一定要使用String对象作为构造器参数,而不是直接使用double数字,否则会发生精度丢失问题。
如果必须使用double浮点数作为参数创建BigDecimal对象,不要使用构造器,而要通过BigDecimal.valueOf(double value)静 态方法来创建BigDecimal对象。