1.1 常用的包
1.1.1包的名称和功能
-
java.lang包-该包是java语言的核心包,并且该包中的所有内容由java虚拟机自动导入。如:System类,String类。
-
java.util包-该包是java语言的工具包,里面提供了大量工具类以及集合类等。
-
java.io包-该包是java语言的输入输出包,里面提供了大量读写文件的相关类。
-
java.net包-该包是java语言中的网络包,里面提供了大量网络编程相关的类。
-
java.sql包-该包是java语言中的数据包,里面提供了大量操作数据库的类和接口等。
1.2 Object类的概述
1.2.1基本概念
-
java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间 接子类。
-
如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为 java.lang.Object 类。
-
1.2.2常用方法
| 方法声明 | 功能介绍 |
|---|---|
| Object() | 使用无参方式构造对象 |
| boolean equals(Object obj) | 用于判断调用对象是否与参数对象相等。 该方法默认比较两个对象的地址是否相等,与 == 运算符的结果一致 若希望比较两个对象的内容,则需要重写该方法。 若该方法被重写后,则应该重写hashCode方法来保证结果的一致 性 |
| int hashCode() | 用于获取调用对象的哈希码值(内存地址的编号)。 若两个对象调用equals方法相等,则各自调用该方法的结果必须相 同 若两个调用对象equals方法不相等,则各自调用该方法的结果应该 不相同。 为了使得该方法与equals方法保持一致,需要重写该方法。 |
| String toString() | 用于获取调用对象的字符串形式 该方法默认返回的字符串为:包名.类名@哈希码值的十六进制 为了返回更有意义的数据,需要重写该方法 使用print或println打印引用或字符串拼接引用都会自动调用该方法 |
//Student类
import java.util.Objects;
public class Student extends Object{
private int id;
private String name;
public Student() {
}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*//重写equals方法
@Override
public boolean equals(Object obj) {
//return super.equals(obj); //默认是调用object的equals方法
// 当调用对象和参数对象指向同一个对象时,则内容一定相同
if (this == obj) return true;
//当调用参数不为空而参数对象为空时,则内容一定不相容
if(null == obj) return false;
// 判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
if(obj instanceof Student){
Student st = (Student) obj;
// 以学号作为基准判断两个对象是否相等 int是基本数据类型,内存空间中放的就是数据本身,使用 == 可以判断数据是否相同
return this.getId() == st.getId();
// 以姓名作为基准判断两个对象是否相等 String是引用数据类型,内存空间中放的是地址,使用 == 判断地址是否相同
// 也就是判断两个对象中姓名字符串的地址是否相同,不够完美
//return this.getName().equals(st.getName());
}
// 否则类型不一致没有可比性,则内容一定不相同
return false;
}
*//**
* 为了使得该方法的结果与equals方法的结果保持一致,从而满足Java官方的常规协定,需要重写该方法
*//*
@Override
public int hashCode() {
//return super.hashCode();
final int type = 12;
return type*31 + getName().hashCode();
}*/
//equals,hashCode自动重写