Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现了这个类的方法。
- clone() 创建并返回此对象的一个副本
- equals() 指示其他某个对象是否与对此对象 “相等”
- getClass() 返回该对象的 运行时类 与反射有关
- hashCode() 返回该对象的 哈希值 可以理解为对象的地址(大概是把 内存地址的十六进制 转换为了 十进制)
- finalize()
- notify() 唤醒在此对象监视器上 等待的单个线程。
- notifyAll() 唤醒在此对象监视器上等待的所有 线程。
- toString() 返回该对象的 字符串表达形式
- wait() 在其他线程调用此对象 的 notify 或 notifyAll 方法前,导致 当前线程等待。
- wait(long) 在其他线程调用此对象 的 notify 或 notifyAll 方法前,或者是 超过指定的 时间量前,导致当前线程等待。时间一过,就不需要等待了。
- wait(long,int) 在其他线程调用此对象 的 notify 或 notifyAll 方法前,或者是 超过指定的 时间量前,导致当前线程等待。时间一过,就不需要等待了。或者是 被其他线程终止掉了。就不需要等待了。
1.getClass() 方法
public final Class> getClass(){}
返回引用中 存储的实际对象类型。
应用:通常用于判断两个引用中实际存储对象类型是否一致。
2.hashCode() 方法
public int hashCode(){}
返回的是 哈希值。
哈希值根据对象的地址或字符串或数字使用 hash算法计算出来的 int 类型的数值。但据说 这个 hashCode 好像就是 十六转十。
一般情况下,相同对象 会返回 相同的哈希值。
3.toString() 方法
public String toString(){}
返回该对象的字符串表达形式。
可以根据程序需求覆盖该方法,如:展示对象各个属性值。可以重写
4.equals() 方法
public boolean equals(Object obj){}
默认实现为(this == obj) 比较两个对象 地址 是否相同
可进行重写,比较两个对象的内容是否相同。
那么为什么 String.equals() 比较的是 字符串的内容呢。而不是 地址呢?
答:因为 在 String 的这个 类里,重写了 equals 方法。
5.finalize() 方法 现已不让用
- 当对象 被判定为 垃圾对象时,由JVM自动调用 此方法,用 以 标记垃圾对象,进入回收队列。
- 垃圾对象:没有有效引用 指向此对象时,为垃圾对象。
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
- 自动回收机制:JVM 的内存耗尽,一次性回收所有垃圾对象。
- 手动回收机制:使用System.gc(); 通知 JVM 执行垃圾回收。
1.2 包装类
- 基本数据类型所 对应的引用数据类型(就属于 包装类)。
基本类型 转 引用类型:俗称装箱。(栈 拿到 堆)
引用类型 转 基本类型:俗称拆箱。(堆 拿到 栈)
- Integer 整型类
//以构造方法 来 装箱 只能装 int 类型的 Integer integer1 = new Integer(num1); //以 valueOf() 方法 来装箱,可以装String 和 int Integer integer2 = Integer.valueOf("123"); //隐式 自动装箱 Integer integer3 = 123;
隐式的自动装箱 无法 把 字符串直接自动装箱,只允许 int 基本类型,这是因为 自动装拆箱 原理是 构造和析构函数的自动调用,或者是 valueOf 方法的自动调用。
反汇编后 发现 自动调用了 valueOf() 方法。
//以 intValue() 取值 方法 来进行拆箱 Integer integer1 = new Integer(num1); //隐式转换 自动拆箱 !!现在比较提倡这种!! int num1 = integer1;
我们可以很容易的 利用 Integer 来把字符串数字 转 整型数字
Integer integer2 = Integer.valueOf("123"); System.out.println(integer2); int num2 = integer2.intValue(); System.out.println(num2);
1.3 类型转换与装箱、拆箱
-
八种包装类提供不同类型间的转换方式:
-
Number 父类 中 提供的 六个 共性方法。
-
parse XXX() 静态方法。
- 整型 转 字符串
int n1 = 100; //+ 号 方式 转 字符串 String s1 = n1+""; //使用 Integer 的 toString() 方法。 String s2 = Integer.toString(n1); //还可以 根据 进制来转换 String s3 = Integer.toString(n1,16);//以 16 进制处理数字 转换为字符串
- 字符串 转 整型
String str = "150"; //使用 Integer.parseXXX(); Integer.parseInt(str);//以 解析的 形式 转成 int 类型
- 字符串 转 Boolean
String str2 = "true"; boolean b1 = Boolean.parseBoolean(str2);//以解析的格式转 booolean
只要 字符串 不是 true 就得会 被转成 falsae
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)