Java API 及 Object类

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 + "]";
	}

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gcyqweasd/article/details/109860557