Java study notes (15)-API, Object class

API

Application Programing Interfaces 应用程序接口
程序员说明书,利用程序生成的注释集合。学会使用API。
提供一系列的接口与接口下的类。

Object class

1.所有类的父类,根类。
2.由于Java是单继承和多重继承的集合,因此object可以认为是第一个类。即所有类的父类。本身没有父类。
3.我们创建的所有的类,会在底层默认继承了Object类。
4.属性和方法
	作为所有类的父类,子类的对象可以调用父类的方法和属性。
	API中没有写明修饰符的方法名称,默认为public类型。
5.object的地位使得所有的类都可以进行向上造型。
6.clone()方法
//CloneNotSupportedException克隆不支持异常
	//解决该异常的方法 该类实现一个接口 Cloneable该接口仅仅作为一个标志来完成的
	使用克隆方法克隆的对象的值和方法都一样。
//克隆方法clone();
public class ObjectDemo implements Cloneable{
    
    
 int i=6;
 String s = ",ppp";
 public static void main(String[] args) throws CloneNotSupportedException {
    
    
  //创建对象
  ObjectDemo o1 = new ObjectDemo();
  System.out.println(o1.i+o1.s);
  //调用clone方法进行克隆
  Object o2 =   o1.clone();
  System.out.println(o2);
  ObjectDemo o3 =  (ObjectDemo) o1.clone();
  System.out.println(o3.i+o3.s);
 }
}
//CloneNotSupportedException克隆不支持异常
//解决该异常的方法 该类实现一个接口 Cloneable该接口只做标记进行,实现该接口的类均可进行克隆。
//克隆是创建了一个新的对象 将原对象的属性和方法都以同样的参数 传入到了新创建的对象中
//被protected修饰的信息如果和当前使用的位置是其他类位置
//除了是其他类位置和父类关系,子类对象只能在本类中使用才能调用到信息。
7.finalize()方法——单词含义通知,返回object实际创建类的类型即全路径。
 	通知系统进行回收,因为数据在内存中是根据一定的时间间隔来作为垃圾回收的,本方法打破了这个限制
 即通知计算机直接进行垃圾的回收。
try {
    
    
   o1.finalize();
  } catch (Throwable e) {
    
    
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 8.getClass()方法,获取一个类,返回一个object运行时的一个类。即new后面的类的路径。
public class ObjectDemo2 {
    
    
 public static void main(String[] args) {
    
    
  //创建对象
  ObjectDemo2 o = new ObjectDemo2();
  Object o2 = new ObjectDemo2();//向上造型
  System.out.println(o); 
  System.out.println(o2);
  System.out.println(o.getClass());
  System.out.println(o2.getClass());
  //对象的地址——com.hst._20201213.ObjectDemo2@15db9742
  //包名+类名=全路径名——class com.hst._20201213.ObjectDemo2
//运行结果
//  com.hst._20201213.ObjectDemo2@15db9742
//  com.hst._20201213.ObjectDemo2@6d06d69c
//  class com.hst._20201213.ObjectDemo2
//  class com.hst._20201213.ObjectDemo2
  //getClass();
  //该方法返回的是创建对象的类的全路径
 }
}
 9.hashCode() 
 	返回对象的哈希码值
 	返回对象的哈希码值不一样
 		哈希码值的取值范围广,和int无符号一样大【0,2^32-1】
 		哈希码值散列分布,可以实现均匀分布。
 		效果——范围广,几乎不会发生重复的事件。
 		哈希码值一定唯一,对象的地址值唯一,哈希码值可以代表对象地址值。
 		对象地址值是10进制的哈希码值转换为16进制的地址值。
ObjectDemo2 s = new ObjectDemo2();
  System.out.println(s);
  System.out.println(s.hashCode());
  System.out.println(Integer.toHexString(s.hashCode()));
  //运行结果
//  com.hst._20201213.ObjectDemo2@15db9742对象的地址
//  366712642对象的哈希码值
//  15db9742哈希码值转换后的结果
10.toString 返回对象的拼接地址值。
	一般重写该方法,返回每个对象的属性值
public static void main(String[] args) {
    
    
  //创建对象
  ObjectDemo3 o = new ObjectDemo3();
  System.out.println(o);
  String s = o.toString();
  System.out.println(s);
  //运行结果
//  com.hst._20201213.ObjectDemo3@15db9742
//  com.hst._20201213.ObjectDemo3@15db9742
  //看tostring方法的源码
//    public String toString() {
    
    
//          return getClass().getName() + "@" + Integer.toHexString(hashCode());
//      }
 }
11.equals()方法 是否有对象等于该对象,盘对对象是否相等,即地址是否一样。
该方法一般重写进行使用。
public static void main(String[] args) {
    
    
  //创建对象
  PersonDemos p1 = new PersonDemos();
  PersonDemos p2 = new PersonDemos();
  System.out.println(p1.equals(p1));
  System.out.println(p1.equals(p2));
  PersonDemos p3 = p1;
  System.out.println(p1.equals(p3));
  //运行结果
//  true
//  false
//  true
  //由此可见 该方法默认是判断两个对象是否一致时 是利用地址值进行的
 }
}
class PersonDemos{
    
    
 String name;
 int age;
 char gender;
}

Guess you like

Origin blog.csdn.net/qq_42351519/article/details/111285256