小白学JAVA之十四——常用类
一. 常用包
java.lang包 - 该包是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入。
如:System类、String类、…java.util包 - 该包是Java语言的工具包,里面提供了大量工具类以及集合类等。
如:Scanner类、Random类、List集合、…java.io包 - 该包是Java语言中的输入输出包,里面提供了大量读写文件相关的类等。
如:FileInputStream类、FileOutputStream类、…java.net包 - 该包是Java语言中的网络包,里面提供了大量网络编程相关的类等。
如:ServerSocket类、Socket类、…java.sql 包 - 该包是Java语言中的数据包,里面提供了大量操作数据库的类和接口等。
如:DriverManager类、Connection接口、…
二. Object类
1.基本概念
java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类。
如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为 java.lang.Object 类。Object类定义了“对象”的基本行为, 被子类默认继承。
2.常用方法

import java
.util
.Objects
;
public class Student extends Object {
private int id
; // 用于描述学号的成员变量
private String name
; // 用于描述姓名的成员变量
public Student() {
}
public Student(int id
, String name
) {
setId(id
);
setName(name
);
}
public int getId() {
return id
;
}
public void setId(int id
) {
if (id
> 0) {
this.id
= id
;
} else {
System
.out
.println("学号不合理哦!!!");
}
}
public String
getName() {
return name
;
}
public void setName(String name
) {
this.name
= name
;
}
/**
* 为了比较两个对象的内容,也就是学号信息需要重写该方法
*/
// Student this = s1;
// Object obj = s2;
/*
@Override
public boolean equals(Object obj) {
// 当调用对象和参数对象指向同一个对象时,则内容一定相同
if (this == obj) return true;
// 当调用对象为不为空而参数对象为空时,则内容一定不相同
if (null == obj) return false;
// 判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
if (obj instanceof Student) {
Student ts = (Student) obj;
// 以学号作为基准判断两个对象是否相等 int是基本数据类型,内存空间中放的就是数据本身,使用 == 可以判断数据是否相同
//return this.getId() == ts.getId();
// 以姓名作为基准判断两个对象是否相等 String是引用数据类型,内存空间中放的是地址,使用 == 判断地址是否相同
// 也就是判断两个对象中姓名字符串的地址是否相同,不够完美
//return this.getName() == ts.getName();
return this.getName().equals(ts.getName()); // 比较姓名字符串的内容是否相同
}
// 否则类型不一致没有可比性,则内容一定不相同
return false;
}
*/
@Override
public boolean equals(Object o
) {
if (this == o
) return true;
if (o
== null
|| getClass() != o
.getClass()) return false;
Student student
= (Student
) o
;
return id
== student
.id
&&
Objects
.equals(name
, student
.name
);
}
/**
* 为了使得该方法的结果与equals方法的结果保持一致,从而满足Java官方的常规协定,需要重写该方法
*/
/*
@Override
public int hashCode() {
//return getId(); // 不再代表内存地址的编号了
final int type = 12;
//return type*31 + getId();
return type*31 + getName().hashCode();
}
*/
@Override
public int hashCode() {
return Objects
.hash(id
, name
);
}
/**
* 为了返回更有意义的字符串数据,则需要重写该方法
*/
@Override
public String
toString() {
return "Student{" +
"id=" + id
+
", name='" + name
+ '\'' +
'}';
}
三. 包装类
3.1 包装类的分类

3.2 Integer类
3.2.1基本概念
java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装并提供int类型到String类之间的转换等方法。
3.2.2常用方法

3.2.3装箱和拆箱
在Java5发布之前使用包装类对象进行运算时,需要较为繁琐的“拆箱”和“装箱”操作;即运算前先将包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。
从Java5开始增加了自动拆箱和自动装箱的功能。
// 1.使用构造方法来构造Integer类型的对象并打印
Integer it1
= new Integer(123);
System
.out
.println("it1 = " + it1
); // 自动调用toString方法 123
Integer it2
= new Integer("456");
System
.out
.println("it2 = " + it2
); // 456
// 上述方法已过时,建议使用valueOf方法取代之,相当于从int类型到Integer类型的转换,叫做装箱
Integer it3
= Integer
.valueOf(123);
System
.out
.println("it3 = " + it3
); // 123
// 相当于从String类型到Integer类型的转换
Integer it4
= Integer
.valueOf("456");
System
.out
.println("it4 = " + it4
); // 456 自动调用toString方法得到的是String类型
// 获取调用对象中的整数数值,相当于从Integer类型到int类型的转换,叫做拆箱
int ia
= it4
.intValue();
System
.out
.println("获取到的整数数据是:" + ia
); // 456 得到的是int类型
// 2.从Java5开始增加了自动装箱和自动拆箱的机制
Integer it5
= 100; // 直接通过赋值运算符实现自动装箱
int ib
= it5
; // 直接通过赋值运算符实现自动拆箱
3.2.4自动装箱池
在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
3.2.5装箱和拆箱笔试考点
Integer it6
= 128; //127;
Integer it7
= 128; //127;
Integer it8
= new Integer(128); //new Integer(127);
Integer it9
= new Integer(128); //new Integer(127);
System
.out
.println(it6
== it7
); // 比较地址 false // true 地址一样
System
.out
.println(it6
.equals(it7
)); // 比较内容 true
System
.out
.println(it8
== it9
); // 比较地址 false
System
.out
.println(it8
.equals(it9
)); // 比较内容 true
3.3 Double类
3.3.1基本概念
java.lang.Double类型内部包装了一个double类型的变量作为成员变量,主要用于实现对double类型的包装并提供double类型到String类之间的转换等方法。
3.3.2常用方法

3.4 Boolean类
3.4.1基本概念
java.lang.Boolean类型内部包装了一个boolean类型的变量作为成员变量,主要用于实现对boolean类型的包装并提供boolean类型到String类之间的转换等方法。
3.4.2常用方法

3.5 Character类
3.5.1基本概念
java.lang.Character类型内部包装了一个char类型的变量作为成员变量,主要用于实现对char类型的包装并提供字符类别的判断和转换等方法。
3.5.2常用方法

3.6 包装类(Wrapper)的使用总结
基本数据类型转换为对应包装类的方式:
调用包装类的构造方法或静态方法valueOf即可获取包装类对象中基本数据类型变量数值的方式:
调用包装类中的xxxValue方法即可字符串转换为基本数据类型的方式:
调用包装类中的parseXxx方法即可
四. 数学处理类
4.1 Math类
4.1.1基本概念
java.lang.Math类主要用于提供执行数学运算的方法,如:对数,平方根。
4.1.2常用方法

4.2 BigDecimal类
4.2.1基本概念
由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助java.math.BigDecimal类型加以描述。
4.2.2常用方法

4.2.3 BigDecimal类实现精确计算
// 实现精确运算
System
.out
.println(0.1 + 0.2); // 0.30000000000000004
BigDecimal bd3
= new BigDecimal("0.1");
BigDecimal bd4
= new BigDecimal("0.2");
System
.out
.println("精确计算的结果是:" + bd3
.add(bd4
)); // 0.3
4.3 BigInteger类
4.3.1基本概念
若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述。
4.3.2常用方法
