一、Object类与包装类
1.1 Object类
Java提供了一个Object类,它是所有类的父类,每个类都直接或间接继承了Object类,如果一个类没有用extends关键字显示指定父类,那么该类会默认继承了Object类,因此Object类通常称为超类。
Object类中常用的方法
| 方法名称 | 方法说明 |
|---|---|
| boolean equals() | 判断2个对象是否相等 |
| int hashCode() | 返回对象的散列码值 |
| String toString() | 返回对象的字符串表示形式 |
【例1.1-01】比较两个对象是否相等。
设有两个引用对象obj1,obj2,
obj1==obj2 判断是obj1,obj2它们所指向的对象是否为同一个对象。言外之意就是这两个变量所指内存地址相等的时候,才能返回true,即指向同一个对象。
下面两个对象
dog1和dog2这两个对象应该是同一个对象,它们应该是相同的,但它们在内存中的实体空间不一样,所有用“==”去比较,是比较这两个实体的地址,所以结果为false。
判断两个对象是不是同一个对象,需要重写equals()方法,用equals()方法去比较。可以认为部分属性相同的对象为同一个对象,如学生只要学号和姓名相同,就可以认为这个学生是同一个学生,本例中的设定狗的昵称、亲密度和品种相同,就可以认为这两个对象指的是同一只狗了。
1.2 包装类
Java的基本数据类型不是对象,不是Object类的子类,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java为我们提供了基本数据类型的包装类,以后我们在定义类的成员变量时,建议使用包装类型。
| 基本数据类型 | 包装类型 |
|---|---|
| byte | Byte |
| char | Character |
| int | Integer |
| short | Short |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
数据类型转换方法(以下方法不支持Character类)
| 方法名称 | 方法说明 |
|---|---|
| valueOf(String s) | 将字符串转换为对应的数据类型的值 |
| parseXXX(String s) | 将字符串转换为对应的数据类型的值 |
二、String类
Java中定义了String和StringBuffer、StringBuilder三个类来封装字符串,并提供了一系列操作字符串的方法。
2.1 Strng类
1、String类的初始化
(1)使用字符串常量直接初始化一个String对象
(2)使用String的构造方法初始化字符串对象
2、String常见的方法
【2.1-01】String常见的方法
2.2 StringBuffer类和StringBuilder类
1、StringBuffer、StringBuilder和String的区别
- StringBuilder类和StringBuffer类的内容和长度都是可以改变的,类似一个字符容器,当在其中添加或删除字符时,并不会产生新的对象。
- String类的内容是不可变的,它的本质是一个字符数组。
- StringBuilder类和StringBuffer类用法基本一致,但StringBuilder是线程非安全的,而StringBuffer是线程安全的。当字符串缓冲去被多个线程使用时,JVM不能保证StringBuilder的操作是安全的,但是它的速度最快。当然大多数情况下我们都是在单线程下进行的操作,所以大多数情况下建议用StringBuilder而不用StringBuffer。
- 如果要操作少量的数据用String 。
- 单线程操作字符串缓冲区下操作大量数据用StringBuilder。
- 多线程操作字符串缓冲区下操作大量数据用StringBuffer。
2、StringBuffer、StringBuilder常用方法
【2.2-01】StringBuffer常见的方法
三、System类
System类对大家来说并不陌生,因为之前在打印结果时,使用的都是“System.out.println()”语句。这句代码中就使用了System类。
System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。
【3.1-01】System类常见的方法
四、Math类
Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。
4.1 静态常量
Math类中有两个静态常量PI和E,分别代表数学常量π和e。
4.2 求最大值、最小值和绝对值
4.3 求整运算
4.4 指数运算
五、Date类与Calender类
5.1 Date类
java.util包提供了Date类来封装当前的日期和时间。Date类中大部分构造方法都被声明为已过时,只有两个构造方法getTime()方法是建议使用的,一个是无参的构造方法Date(),用来创建当前日期时间的Date对象。另一个是接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象,其中date参数表示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。getTime()获取时间戳。
5.2 DateFormat类
如果要将Date对象表示的日期以指定的格式输出,例如输出中文格式的时间,就需要用到DateFormat类。DateFormat类专门用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象。DateFormat是抽象类,不能被直接实例化,该类提供了一个SimpleDateFormat类,可以使用new关键字创建实例对象,它的构造方法接收一个格式字符串参数,表示日期格式模板,使用format()方法对日期进行格式化。
| 格式名称 | 格式说明 |
|---|---|
| y | 年。如yy-21,yyyy-2021 |
| M | 月。如M-3,MM-03 |
| d | 日。如d-7,dd-07 |
| H | 时。H-24时,h-12时 |
| m | 分。 |
| s | 秒 |
| S | 毫秒 |
| E | 星期几 |
| D | 一年中的日子 |
| w | 一年中第几周 |
| W | 一个月中第几周 |
5.3 Calendar类
Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分和秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后调用其相应的方法:
Calendar类中些常量

[
](https://www.w3cschool.cn/java/dict)
【练习】
1、输入一个字符串,输入一个字符,判断该字符在该字符串中出现的次数 。
如:我爱我的祖国,我爱我的故乡,查找“爱”字出现的次数,输出:2
【提示】先将字符串转换成字符数组,然后在字符数组中查找字符。
2、将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔。
如: 12345678转换为12,345,678
3、去年的今天是星期几?
Java API 参考文档:https://www.w3cschool.cn/java/dict



