您的位置 首页 java

java.lang 包简介

文章带你学习 java .lang 包内的包装类以及 String 类、Math 类、Class 类、Object 类的相关知识。

Java API 简介

Java 的核心 API 是非常庞大的,这给开发者来说带来了很大的方便。所谓的 API 就是一些已经写好、可直接调用的类库。Java 里有非常庞大的 API,其中有一些类库是我们必须得掌握的,只有熟练掌握了 Java 一些核心的 API,我们才能更好的使用 Java。

java 类库

在程序中,java.lang 包并不需要像其他包一样需要 import 关键字进行引入。系统会自动加载,所以我们可以直接取用其中的所有类。下面我们就来详细地学习一下 java.lang 包吧

java.lang 包装类

我们都知道 java 是一门面向对象的语言,类将方法和属性封装起来,这样就可以创建和处理相同方法和属性的对象了。但是 java 中的基本数据类型却不是面向对象的,不能定义基本类型的对象。那如果我们想像处理对象的方式处理基本类型的数据,调用一些方法怎么办呢?

其实 java 为每个基本类型都提供了包装类:

原始数据类型 包装类
byte (字节) Byte
char(字符) Character
int(整型) Integer
long (长整型) long
float(浮点型) Float
double (双精度) Double
boolean (布尔) boolean
short(短整型) Short

在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写。

1 Integer 类

java.lang 包中的 Integer 类、Long 类和 Short 类都是 Number 的子类,他们的区别在于不同子类里面封装着不同的数据类型,比如 Integer 类包装了一个基本类型 int。其包含的方法基本相同。

我们以 Integer 类为例。 Integer 构造方法 有两种:

  • Integer(int value) ,以 int 型变量作为参数创建 Integer 对象。例如 Integer a = new Integer(10);

  • Integer(String s) ,以 String 型变量作为参数创建 Integer 对象,例如 Integer a = new Integer(“10”)

下面列举一下 Integer 的常用方法

方法 返回值 功能描述
byteValue() byte 以 byte 类型返回该 Integer 的值
CompareTo(Integer anotherInteger) int 在数字上比较 Integer 对象。如果这两个值相等,则返回0;如果调用对象的数值小于 anotherInteger 的数值,则返回负值;如果调用对象的数值大于 anotherInteger 的数值,则返回正值
equals(Object IntegerObj) boolean 比较此对象与指定对象是否相等
intValue() int 以 int 型返回此 Integer 对象
shortValue() short 以 short 型返回此 Integer 对象
longValue() long 以 long 型返回此 Integer 对象
floatValue() float 以 float 型返回此 Integer 对象
doubleValue() double 以 double 型返回此 Integer 对象
toString () String 返回一个表示该 Integer 值的 String 对象
valueOf(String str) Integer 返回保存指定的 String 值的 Integer 对象
parseInt(String str) int 字符串 参数作为有符号的十进制整数进行解析

我们来写一些代码,验证一下上面的方法吧

输出结果:

大家自己试一试吧。

2 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 确定字符是否为空白字符
isUnicodeIdentifierStart(char ch) boolean 确定是否允许将指定字符作为 Unicode 标识符中的首字符

大家可以参考一下代码,验证一下上面的方法(同学们一定要亲自打哦,学代码的最好方式是实操)

输出结果:

3 Boolean 类

Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。

Boolean 类的构造方法也有两个:

  • Boolean(boolean value),创建一个表示 value 参数的 Boolean 对象,如 Boolean b = new Boolean(true)

  • Boolean(String s),如果 String 参数不为 null 且在忽略大小写时等于 “true”,创建一个表示 true 值的 Boolean 对象,如 Boolean b = new Boolean(“ok”) ,为 true。

Boolean 包装类的常用方法:

方法 返回值 说明
booleanValue() boolean 将 Boolean 对象的值以对应的 boolean 值返回
equals(Object obj) boolean 判断调用该方法的对象与 obj 是否相等。当且仅当参数不是 null,而且与调用该方法的对象一样都表示同一个 boolean 值的 Boolean 对象时,才返回 true
parseBoolean(Strint s) boolean 将字符串参数解析为 boolean 值
toString() String 返回表示该 boolean 值的 String 对象
valueOf(String s) Boolean 返回一个用指定得字符串表示值的 boolean 值

我们来写一些代码,验证一下上面的方法吧

输出结果:

其他的都差不多,大家可以自行去验证和参考 Java 类库的手册吧。

java.lang 类 String

我们经常使用 String 类来定义一个字符串。字符串是 常量 ,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。

String 对象的初始化格式有如下两种:

String s0 = "abc";
String s1 = new String("abd"); 

String 类具有丰富的方法,比如计算字符串的长度、连接字符串、比较字符串、提取字符串等等。

1 计算字符串长度

length()方法

//方法原型
public int length(){
} 

调用方法: 字符串标识符.length();

返回一个int类型的整数(字符串中字符数,中文字符也是一个字符)。例如:

则变量len1的值是3,变量len2的值是6。

2 字符串比较

equals() 方法,该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false。

equals() 方法比较是从第一字符开始,一个字符一个字符依次比较。

equals比较原理

那如果我想忽略掉大小写关系,比如:java 和 Java 是一样的,我们怎么办呢?我们可以调用 equalsIgnoreCase() 方法,其用法与 equals 一致,不过它会忽视大小写。

比如:

输出结果:

equals()与equalsIgnoreCase()

而使用 “==” 比较的是两个对象在内存中存储的地址是否一样。例如:

则变量b的值是false,因为s1对象对应的地址是”abc”的地址,而s2使用new关键字申请新的内存,所以内存地址和s1的”abc”的地址不一样,所以获得的值是false。

3 字符串连接

字符串连接有两种方法:

  • 使用 + ,比如 String s = “Hello ” + “World!”

  • 使用 String 类的 concat() 方法

代码示例:

而且使用 + 进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。

4 charAt()方法

charAt()方法的作用是按照 索引 值(规定字符串中第一个字符的索引值是0,第二个字符的索引值是1,依次类推),获得字符串中的指定字符。例如:

 String s = "abc";
 char c = s.charAt(1); 

则变量c的值是’b’。

5 字符串常用提取方法

方法 返回值 功能描述
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 返回一个前后不含任何空格的调用字符串的副本

说明:在字符串中,第一个字符的索引为0,子字符串包含beginindex的字符,但不包含endindex的字符。

我们来写一些代码,验证一下上面的方法吧

java.lang 包简介

输出结果:

java.lang 包简介

6 StringBuffer

同学们,String 类的字符串创建后是不能够改变的。有些同学都不太明白,我们通过代码看一看吧。

java.lang 包简介

String 的不变性的机制显然会在 String 常量内有大量的冗余。比如我创建一个循环,使字符’1’依次连接到’n’,那么系统就得创建 n+(n-1) 个 String 对象。那有没有可变的 String 类呢?

StringBuffer 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的,这里建议大家去看一看 String 类与 StringBuffer 类的区别,理解一下他们在内存中的存储情况)

先上 StringBuffer 的构造方法:

构造方法 说明
StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
StringBuffer(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符
StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

StringBuffer类的常用方法:

方法 返回值 功能描述
insert(int offsetm,Object s) StringBuffer 在 offetm 的位置插入字符串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 删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列
replace(int start, int end, String s) StringBuffer 使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束

上面的方法中我们选择几个,来写写代码吧:

java.lang 包简介

输出结果为: I love java

其他的方法,请同学们一定要自己亲自一一验证一下!

在这里只介绍了 String 类常用的方法,其他方法可参照 JDK 文档。

java.lang 类 Math

我们在编程的过程中,经常对一些数字进行数学操作,比如我们想要求绝对值或余弦什么的。那这些方法是否需要我们自己实现吗?其实在 java.lang 里的 Math 类Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。我们就来学习一下吧!

先认识一些方法吧:

方法 返回值 功能描述
sin(double numvalue) double 计算角 numvalue 的正弦值
cos(double numvalue) double 计算角 numvalue 的余弦值
acos(double numvalue) double 计算 numvalue 的反余弦
asin(double numvalue) double 计算 numvalue 的反正弦
atan(double numvalue) double 计算 numvalue 的反正切
pow(double a, double b) double 计算 a 的 b 次方
sqrt(double numvalue) double 计算给定值的正平方根
abs(int numvalue) int 计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
ceil(double numvalue) double 返回大于等于 numvalue 的最小整数值
floor(double numvalue) double 返回小于等于 numvalue 的最大整数值
max(int a, int b) int 返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
min(int a, int b) int 返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数
rint(double numvalue) double 返回最接近 numvalue 的整数值
round(T arg) arg 为 double 时返回 long,为 float 时返回 int 返回最接近arg的整数值
random() double 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

上面都是一些常用的方法,如果同学们以后还会用到极坐标、对数等,就去查一查手册吧。

我们来看看部分方法的示例代码:

java.lang 包简介

输入结果:

java.lang 包简介

5 java.lang 类 Class

Class 类的实例表示正在运行的 Java 应用程序中的类或接口。在 Java 中,每个 Class 都有一个相应的 Class 对象,即每一个类,在生成的 .class 文件中,就会产生一个 Class 对象,用于表示这个类的类型信息。我们获取 Class 实例有三种方法:

  • 利用对象调用 getClass() 方法获取该对象的 Class 实例

  • 使用 Class 类的静态方法 forName(String className) ,用类的名字获取一个 Class 实例

  • 运用 .class 的方式来获取 Class 实例,对于基本数据类型的封装类,还可以采用 .TYPE 来获取相对应的基本数据类型的 Class 实例

Class 类对象

Class 类对象访问

Class 类对象访问结果

class 类没有共有的构造方法,它由 JVM 自动调用。class 类的方法在这里就不细讲了,有兴趣的同学们可以自己查询一下。

java.lang 类 Object

Object 类是所有类的父类,所有对象(包括数组)都实现这个类的方法。所以在默认的情况下,我们定义的类扩展自 Object 类,那我们当然可以调用和重写 Object 类里的所有方法了。

我们看一下 Object 类里都定义了哪些方法。

方法 返回值 功能描述
equals(Objectobj) boolean 将当前对象实例与给定的对象进行比较,检查它们是否相等
finalize() throws Throwable void 当垃圾回收器确定不存在对象的更多引用时,由对象的垃圾回收器调用此方法。通常被子类重写
getClass() Class 返回当前对象的 Class 对象
toString() String 返回此对象的字符串表示
wait() throws InterruptedException void 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,使当前线程进入等待状态

这个也不细讲了,同学们可以自行验证一下上面的方面,如果有兴趣,也可以深入了解一下里面的其他方法。

同学们如果感觉 Eclipse 上的字体大小不合适,木木教大家来自定义代码编辑框中的文字样式和大小。

1、在菜单栏下点击 Window 选择 Perferences

2、下拉 General 下的 Appearance 选中 Colors and Fonts

3、这里面有不同应用场景下代码或系统日志等字体的样式和大小,我们可以选中 java 编辑里面的字体样式

4、选中字体的应用场景后,选中右边的 Edit ,便可编辑它的字体和大小了

最后:

文章所有内容截选自实验楼教程:【JDK 核心 API】(教程链接:)第一节,该教程总共7节,主要是学习包括 java.lang 包,java.util 包,java.io 包以及泛型的相关知识,剩下6节的列表是:

  • java.util 包

  • Java 集合框架

  • java.io 包——字节流

  • java.io 包——字符流

  • 文件操作/随机访问文件

  • 泛型

想要学习更多Java实战项目教程,上实验楼可以找到你想要的Java实战教程;

你也可以上实验楼查看【Java学习路径】,系统性学习Java;

文章来源:智云一二三科技

文章标题:java.lang 包简介

文章地址:https://www.zhihuclub.com/182859.shtml

关于作者: 智云科技

热门文章

网站地图