网站首页 > java教程 正文
说明:文章所有内容均截选自实验楼教程:【JDK 核心 API】(教程链接:https://www.shiyanlou.com/courses/109)
文章带你学习 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的字符。
我们来写一些代码,验证一下上面的方法吧
输出结果:
6 StringBuffer
同学们,String 类的字符串创建后是不能够改变的。有些同学都不太明白,我们通过代码看一看吧。
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 指定的位置结束 |
上面的方法中我们选择几个,来写写代码吧:
输出结果为: 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 |
上面都是一些常用的方法,如果同学们以后还会用到极坐标、对数等,就去查一查手册吧。
我们来看看部分方法的示例代码:
输入结果:
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】(教程链接:https://www.shiyanlou.com/courses/109)第一节,该教程总共7节,主要是学习包括 java.lang 包,java.util 包,java.io 包以及泛型的相关知识,剩下6节的列表是:
java.util 包
Java 集合框架
java.io 包——字节流
java.io 包——字符流
文件操作/随机访问文件
泛型
想要学习更多Java实战项目教程,上实验楼可以找到你想要的Java实战教程;
你也可以上实验楼查看【Java学习路径】,系统性学习Java;
猜你喜欢
- 2024-10-20 使用idea将Java项目打成Jar包,之后生成exe可执行文件
- 2024-10-20 Java并发包,你需要掌握的atomic(java并发实现原理)
- 2024-10-20 一款易于使用的Java验证码软件包(javaee验证码)
- 2024-10-20 Java 覆盖 jar 包内的方法(java覆盖第三方jar中类文件)
- 2024-10-20 都说Java程序占内存多,那么Java对象究竟占多少内存?
- 2024-10-20 JAVA学习笔记之导包(java中的导包命令是哪个)
- 2024-10-20 简单介绍Java 的JAR包、EAR包、WAR包区别
- 2024-10-20 Java juc包学习笔记(java的juc包)
- 2024-10-20 Java带包结构调用命令行运行编译(java怎么使用包)
- 2024-10-20 Java并发包-atomic包-让您彻底掌握AtomicInteger源码
你 发表评论:
欢迎- 07-21如何将 iPhone 中的联系人导出到 Excel/CSV?
- 07-21sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 07-21在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 07-21如何把csv格式转换成Excel格式(csv格式怎么转换)
- 07-21如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 07-21使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 07-21解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 07-21使用vba将Excel 文件转成 CSV 文件
- 最近发表
-
- 如何将 iPhone 中的联系人导出到 Excel/CSV?
- sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 如何把csv格式转换成Excel格式(csv格式怎么转换)
- 如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 使用vba将Excel 文件转成 CSV 文件
- python爬虫25 | 爬取的数据怎么保存?CSV了解一下
- MySQL 导出数据(mysql 导出数据 判断成功)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)