package test0811;
public class Text{
public static void main(String[] args) {
/*Object类
* Java API
* java.lang:Java语言包 该包中的类会被自动导入 String Object Math 包装类 System....
* java.util:存放工具类 集合 日期类等....
* java.io:存放文件与流部分的API
* java.net:存放网络编程相关的API
* java.sql:JDBC技术相关的API
*
* Object类
* Object是java中所有类的父类,是唯一一个没有父类的类
* equals方法:public boolean equals(Object obj)
* 返回值是boolean型,参数是Object类型,意味着可以接受任何引用数据类型的对象做实参
* 功能:判断两个对象是否相等,比较的是两个对象的地址
*
* equals 方法在非空对象引用上实现相等关系:
* 自反性:对于任何非空引用值x,x.equals(x)都应返回true.
* 对称性:对于任何非空引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true.
* 传递性:对于任何非空引用值x和y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)应返回true.
* 一致性:对于任何非空引用值x和y,多次调用x.equals(y)始终返回true或始终返回false,前提是对象上equals比较中所用的信息没有被修改.
* 对于任何非空应用值x,x.equals(null)都应返回false.
*
* ==和equal的区别:
* ==可以比较基本数据类型,也可以比较引用数据类型.比较基本数据类型的时候,比的是值;比较引用数据类型时,比的是地址.
* equals只能比较引用数据类型,默认比的是地址,除非某一个类重写了equals方法,就可以有自己的比较逻辑.比如String类
*
* hashCode()方法:public int hashCode() 返回值是int型,作用是返回对象的哈希码值
* 一次程序运行过程中,多次调用hashCode方法,返回的哈希码值是相同的;不同次的程序调用,返回的哈希码值不一定相同
*
* 如果两个对象用equals比较相等,则两个对象的哈希码值一定相等;如果两个对象的哈希码值相等,则equals比较不一定相等
* 如果重写一个类的equals方法,则必须重写hashCode()方法
*
* toString()方法:public String toString() 返回值是String类型,作用是返回对象的字符串表示
* 该方法的应用一般都是某个类重写了toString()方法,比如StringBuffer类
*
* finalize()方法:protected void finalize()
* 当java进行垃圾回收时,调用的就是对象的finalize()方法
*
* 面试:***
* final finally finalize的区别
* final:是个修饰符,可以修饰类,修饰类时类不能被继承;修饰方法时,方法不能被覆盖;修饰成员时,成员变量就是常量,不能被修改.
* finally:是应用在异常处理try...catch后面的一个语句块,特征:不管try语句块中的代码是否发生异常,finally中的代码永远会被执行,它通常用于资源的关闭
* finalize:object类所提供的一个方法,作用:垃圾回收,当对象没有引用指向时,就会调用finalize方法进行垃圾回收释放内存.
*/
/*
Student s1 = new Student();
Student s2 = new Student();
System.out.println(s1.equals(s2));//false
Student s3 = s2;
System.out.println(s2.equals(s3));//true
System.out.println(1==5);//false
System.out.println(s1==s2);//false
*/
/*
Student s = new Student();
System.out.println(s.hashCode());//366712642
*/
/*
Student s = new Student(1,"Lucy",20);
//System.out.println(s.toString());//test0811.Student@15db9742 类名+@+哈希码值
System.out.println(s);//Student [sno=1, sname=Lucy, age=20]
*/
}
}
package test0811;
public class Student {
private int sno;
private String sname;
private int age;
public Student(int sno, String sname, int age) {
this.sno = sno;
this.sname = sname;
this.age = age;
}
@Override
public String toString() {
return "Student [sno=" + sno + ", sname=" + sname + ", age=" + age + "]";
}
}
