Java.lang 包 (包装类、String类、Math类、Class类、Object类)

- 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实用教程 (第三版)_ 耿祥义,张跃平
Java.lang 包 (包装类、String类、Math类、Class类、Object类)的更多相关文章
- JDK框架简析--java.lang包中的基础类库、基础数据类型
题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...
- java.lang包【Object类】
基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...
- int是java.lang包中可用的类的名称
int是java.lang包中可用的类的名称(x) int为基本数据类型,不是类
- Java.lang 包 util 包等各个包详解
java.lang 该包提供了 Java 编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread 等,不使用该包就很难编写 Java 代码了. ...
- JDK_API剖析之java.lang包
java.lang是Java语言的基础包,默认包中的所有来自动import到你写的类中.(按照字母排序) 1.AbstractMethodError 类.错误 自1.0开始有 继承自Incompati ...
- java.lang包
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.特性——不用import 2.String String x = "abc"; < ...
- Java.lang包的接口解读
Java.lang包中提供了八个接口: 1.Appendable 能够被追加 char 序列和值的对象.如果某个类的实例打算接收来自 Formatter的格式化输出,那么该类必须实现 Appendab ...
- 简单看看jdk7源码之java.lang包01
从今天开始简单开始读一遍jdk的源码,估计这个时间会很长,慢慢啃吧....(首先说一句抱歉,因为很多图都是直接百度扣的,图太多了不能为每一个图附上原版链接,不好意思!) 在网上看了很多的教程,读源码有 ...
- java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)方法
描述 Java.lang.Class.forName(String name, boolean initialize, ClassLoader loader) 方法返回与给定字符串名的类或接口的Cla ...
随机推荐
- Oracle 12c JDBC 连接
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- HighChart 体验之旅 (后台传递JSON参数和数据的方法)
转自:http://www.cnblogs.com/daviddai/archive/2013/04/12/Highchart.html 官网:http://www.highcharts.com/ 中 ...
- An Introduction to Computer Thinking
1.Die Grundlage des Computers 1.1 Binärzahl in die Dezimalzahl umsetzen Bereiten nach Gewicht,dann b ...
- 第4章 scrapy爬取知名技术文章网站(2)
4-8~9 编写spider爬取jobbole的所有文章 # -*- coding: utf-8 -*- import re import scrapy import datetime from sc ...
- jquery连续滚动
本文非常详细的讲解在jquery里实现图片或文字的连续循环滚动的方法. 连续循环滚动是我们在网页开发中经常要用到的特效,在jquery里,我们要实现文字或图片的连续循环滚动是非常简单的.出处:http ...
- 激活 IntelliJ IDEA
1.点击下面的链接下载 JetbrainsIdesCrack-4.2-release.jar 链接:https://pan.baidu.com/s/1eNY_bwxF7Efl4QG0yh6l1A 提 ...
- WPF: RenderTransform特效
WPF中的变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放.旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是 ...
- Servlet学习系列1
一.引言: 1.什么是Servlet? JavaWeb 开发规范中的一个组成部分. 服务器端的一段小程序(代码) 2.什么是服务器?→ 安装了服务器软件的计算机. 硬件:电脑 --->高性能 ...
- JSON 解析的可抛弃
先看例子, json文件中有些元素不是我们想要的,在反序列化时可以当它们不存在,下面例子抛弃了 aaa.ccc这两节. package main import ( "encoding ...
- Java 并发:Executor
异常捕获 以前使用executor的时候,为了记录任务线程的异常退出会使用ThreadFactory来设置线程的UncaughtExceptionHandler,但是按照书上的验证发现,采用execu ...