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 ...
随机推荐
- linux 下vim的使用(必看)
vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对U ...
- rails学习笔记: rake db 相关命令
rails学习笔记: rake db 命令行 rake db:*****script/generate model task name:string priority:integer script/g ...
- Java工具:native2ascii ---得到中文对应的ASCII编码
如国际化中,要得到“提交”对应的ASCII编码:
- Sublime Text - 在浏览器打开当前文件
有没有办法通过快捷键在指定的浏览器中打开当前文件? 有点怀念Dreamweaver的F12? 其实Sublime也可以实现这一效果,而且不需要安装任何插件. 进入Tools -> Build S ...
- c 语言 随机生成数函数
int theRandom = 0; theRandom = arc4random_uniform(3)//随机生成一个从0到2的数 或者 #include "stdio.h" # ...
- [LeetCode]Maximum Length of Repeated Subarray
Maximum Length of Repeated Subarray: Given two integer arrays A and B, return the maximum length of ...
- CSS(二)选择符
2019-04-11 22:14:23 1.类型选择符(标签选择符) html中所有的标签都可以直接对元素选择 p em i a html body..... 特点:对页面中所有当前类型的元 ...
- 使用匿名函数给setInterval()传递参数
在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的.这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来 ...
- Vuejs入门级简单实例
Vue作为2016年最火的框架之一,以其轻量.易学等特点深受大家的喜爱.今天简单介绍一下Vue的使用. 首先,需要在官网下载vuejs,或者直接用cdn库.以下实例使用Vue实现数据绑定与判断循环: ...
- 使用js在HTML中自定义字符串格式化方法
Python中支持字符串格式化,其基本形式如下: str = "I'm {name},{age} years old" print(str.format(name="te ...