- Java 的核心 API(Application Programming Interface)是非常庞大的,这给开发者带来了很大的方便。
- java.lang 包是 Java 的核心类库,它包含了运行 Java 程序必不可少的系统类,系统会自动加载,并不需要 import 关键字引入。
包装类
Java 中的基本数据类型不是面向对象的,不能定义基本类型的对象。但是 Java 为每个基本类型提供了包装类,可以让我们像处理对象一样调用一些方法。
原始数据类型 | 包装类 |
---|---|
byte(字节) | Byte |
char(字符) | Character |
int(整型) | Integer |
long (长整型) | Long |
float(浮点型) | Float |
double (双精度) | Double |
boolean (布尔) | Boolean |
short(短整型) | Short |
Integer 类
上表中的六种数字类型类都是 Number 类的子类,区别在于封装着不同的数据类型,但是其包含的方法基本相同。以 Integer 类为例。
Integer 类的构造方法有两种:
Integer(int value),例如:
Integer a = new Integer(10);
。Integer(String s),例如:
Integer a = new Integer("10");
。Integer 类的常用方法:
| 方法 | 返回值 | 功能描述 |
|------|:--------:|------|
| byteValue() | byte | 以 byte 类型返回该 Integer 的值 |
| CompareTo(Integer other) | int | 返回0:相等;负值:other 大;正值:other 小|
| equals(Object other) | boolean | 比较对象与指定对象是否相等 |
| toString() | Stirng | 返回一个表示该 Integer 值的 String 对象 |
| valueOf(String str) | Integer | 返回保存指定的 String 值的 Ingeter 对象|
| parseInt(String s) | int | 将字符串参数解析为 int 值 |
>
> 注:Long.toString(long i, int p),返回整数i的p进制表示字符串。
Character 类
Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。
Character 包装类的常用方法:
| 方法 | 返回值 | 说明 |
|------|--------|------|
| isDigit(char ch) | boolean | 确定字符是否为数字 |
| isLetter(char ch) | boolean | 确定字符是否为字母 |
| isLowerCase(char ch) | boolean | 确定字符是否为小写字母 |
| isUpperCase(char ch) | boolean | 确定字符是否为大写字母 |
| isWhitespace(char ch) | boolean | 确定字符是否为空白字符 |
Boolean 类
Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。
Boolean 类的构造方法也有两个:
Boolean(boolean value),例如:
Boolean b = new Boolean(true);
。Boolean(String s),如果 String 参数不为 null 且在忽略大小写时等于 "true",创建一个表示 true 值的 Boolean 对象。例如:
Boolean b = new Boolean("ok");
,为 false。Boolean 包装类的常用方法:
| 方法 | 返回值 | 说明 |
|------|:--------:|------|
| booleanValue() | boolean | 将 Boolean 对象的值以对应的 boolean 值返回 |
| equals(Object obj) | boolean | 判断调用该方法的对象与 obj 是否相等 |
| parseBoolean(String s) | boolean | 将字符串参数解析为 boolean 值 |
| toString() | String | 返回表示该 boolean 值的 String 对象 |
| valueOf(String s) | Boolean | 返回一个用指定的字符串表示值的 boolean 值 |
更多参见:JDK 1.6 在线中文手册。
String 类
我们经常使用 String 类来定义一个字符串。字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。
- String 对象的常用初始化格式有如下两种:
```java
String s0 = "abc";
String s1 = new String("abd");
```
- String 类具有丰富的方法:
- length(),返回值为 int 类型,中文字符也是一个字符。
- equals(String s),返回值为 boolean 类型,区分大小写,比较引用指向的对象是否相同。equalsIgnoreCase()方法则忽视大小写。关系运算符“==” 比较的是引用是否相同,即引用指向的内存地址。
- startsWith(String s),返回值为 boolean 类型,判断前缀是否为s。类似的还有endsWith(String s)。
- String.valueOf(),返回值为 String 类型,支持六种整型数值转化为字符串。
- concat(),字符串连接,如
String s2 = s0.concat(s1);
。还可以使用“+”,如Srting s = "Hello" + "World!";
。使用“+”还可以连接其他类型,不过连接的内容至少有一个得是字符串类型。- charAt(),返回指定索引的字符,索引值从0开始。
- 常用提取方法:
| 方法 | 返回值 | 功能描述 |
|------|:--------:|----------|
| indexOf(int ch) | int | 搜索字符 ch 第一次出现的索引 |
| indexOf(String value) | int | 搜索字符串 value 第一次出现的索引 |
| lastIndexOf(int ch) | int | 搜索字符ch最后一次出现的索引 |
| lastIndexOf(String value) | int | 搜索字符串 value 最后一次出现的索引 |
| substring(int index) | String | 提取从位置索引开始到结束的字符串 |
| substring(int beginindex, int endindex) | String | 提取beginindex和endindex之间的字符串部分 |
| trim() | String | 返回前后不含任何空格的调用字符串的副本 |
StringBuffer
StringBuffer 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾,而且不会创建新的对象。String 类定义的字符串则是一个常量,对字符串的操作往往需要创建新的对象,再把引用指向新的对象。StringBuffer 的构造方法:
| 构造方法 | 说明 |
|----------|------|
| StringBuffer() | 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符 |
| StringBuffer(CharSequence seq) | 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符 |
| StringBuffer(int capacity) | 构造一个不带字符,但具有指定初始容量的字符串缓冲区 |
| StringBuffer(String str) | 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容 |
>
>- StringBuffer类的常用方法:
>
| 方法 | 返回值 | 功能描述 |
|------|:-------:|----------|
| insert(int offsetm, Object s) | StringBuffer | 在 offsetm 的位置插入字符串s |
| append(Object s) | StringBuffer | 在字符串末尾追加字符串s |
| length() | int | 确定 StringBuffer 对象的长度 |
| setCharAt(int pos, char ch) | void | 使用 ch 设置 pos 上的字符 |
| toString() | String | 转换为字符串形式 |
| reverse() | StringBuffer | 反转字符串 |
| delete(int start, int end) | StringBuffer | 删除strat至end-1 |
| replace(int start, int end, String s) | StringBuffer | 替换 |
注:Java 5 中提出了StringBuilder,和StringBuffer一样支持可变字符串,而且具有速度上的优势,但是前者的方法不是线性安全的(不能同步访问)。所以多数情况下建议使用StringBuild类,然而在应用程序要求线性安全的情况下,则必须使用StringBuffer类。
更多参见:JDK 1.6 在线中文手册。
Math 类
Math 类包含用于执行基本数学运算的方法,下面列出一些常用的方法:
方法 | 返回值 | 功能描述 |
---|---|---|
pow(double a, double b) | double | 计算 a 的 b 次方 |
sqrt(double numvalue) | double | 计算给定值的正平方根 |
abs(int numvalue) | int | 绝对值,也接收 long、float、double |
ceil(double numvalue) | double | numvalue 取上整 |
floor(double numvalue) | double | numvalue 取下整 |
max(int a, int b) | int | 也接收 long、float 和 double 类型的参数 |
min(int a, int b) | int | 可接受 long、float 和 double 类型的参数 |
rint(double numvalue) | double | 返回最接近 numvalue 的整数值 |
round(T arg) | double 返回 long,float 返回 int | 返回最接近整数值 |
random() | double | 返回值带正号,该值大于等于 0.0 且小于 1.0 |
更多参见:JDK 1.6 在线中文手册。
Class 类
Class 类的实例表示正在运行的 Java 应用程序中的类或接口。在 Java 中,每个 Class 都有一个相应的 Class 对象,即每一个类,在生成的.class文件中,就会产生一个 Class 对象,用于表示这个类的类型信息。当一个类被加载且创建对象时,和该类相关的一个类型为Class的对象就会自动创建。虚拟机利用运行时信息选择相应的方法执行。最常用的Class方法时getName,这个方法将返回类的名字。还有一个很有用的方法newInstance(),可以用来快速地创建一个类的实例。例如,
e.getClass().newInstance();
,创建了一个与e具有相同类类型的实例。需要注意的是,这个方法调用无参的构造器,如果没有,则会抛出异常。我们获取 Class 实例有三种方法:
- 利用对象调用 getClass()方法获取该对象的 Class 实例。
- 使用 Class 类的静态方法 forName(String className),用类的名字获取一个 Class 实例。
- 运用.class的方式来获取 Class 实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的 Class 实例。
更多参见:JDK 1.6 在线中文手册。
Object 类
Object 类是所有类的父类,所有对象(包括数组)都实现这个类的方法。所以在默认的情况下,我们定义的类扩展自 Object 类,那我们当然可以调用和重写 Object 类里的所有方法了。Object 类中的方法大致有:
方法 | 返回值 | 功能描述 |
---|---|---|
clone() | Object | 创建并返回对象的一个副本 |
equals(Object obj) | boolean | 将当前对象实例与给定的对象进行比较,检查它们是否相等 |
hashCode() | int | 返回该对象的哈希码值 |
finalize() throws Throwable | void | 不存在对象的更多引用时,由对象的垃圾回收器调用 |
getClass() | Class | 返回当前对象的 Class 对象 |
toString() | String | 返回此对象的字符串表示 |
- equals(Object obj)方法在Object类中默认将判断两个对象是否具有相同的引用,这用于比较对象是否相等就完全没有意义。特别是自己写的类,要注意是否需要重写,当然具体怎么重写又是一件复杂的事,这里不展开,用到再说。
- clone()方法也是挺多内容,不展开讲,需要可以参考:详解 Java clone 方法。
- 建议为自定义的每一个类增加toString方法,它是一种非常有用的调试工具,使用户能够获得一些有关对象状态的必要信息。
更多参见:JDK 1.6 在线中文手册。
参考资料
- 实验楼:JDK 核心 API
- 菜鸟教程:Java StringBuffer
- Java核心技术 卷Ⅰ基础知识 原书第8版
- Java2实用教程 (第三版)_ 耿祥义,张跃平