常用的类:Object
2020-08-03 01:28
1131 查看
文章目录
一、Object
- 超类、基类,所有类的直接或是间接父类,位于继承树的最顶层
- 如果没有写extends显示的继承某个类,都默认继承object类
- object类中定义的方法,是所有对象都具备的方法
- object类型可以存储任何对象:作为参数,可以接收任何对象;作为返回值,可以返回任何对象
- 类似于LINUX系统的“/”
1.getClass()
public final 类<?> getClass()
返回引用中存储的实际对象类型,通常用于判断两个引用中实际存储对象类型是否一致
public class TestStudent { public static void main(String[] args) { Student s1 = new Student("tansk", 18); Student s2 = new Student("tansk", 18); Class class1 = s1.getClass(); Class class2 = s2.getClass(); System.out.println(class1); System.out.println(class2); if (class1 == class2) { System.out.println("class1和class2是同一类型"); } else { System.out.println("class1和class2不是同一类型"); } } } //结果 class learn.java基础之SE.day11常用的类.Object类.Student class learn.java基础之SE.day11常用的类.Object类.Student class1和class2是同一类型 Process finished with exit code 0
2.hashCode()
- 返回该对象的哈希码值
- 哈希值是:根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
- 一般情况下相同对象返回相同哈希码
public class TestStudent { public static void main(String[] args) { Student s1 = new Student("tansk", 18); Student s2 = new Student("tanmy", 19); System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); Student s3=s1; System.out.println(s3.hashCode()); } } //结果 得到不同的hashcode,是因为实例化s1和s2的时候开辟了两个不同的内存空间在推里面,所以通过内存地址计算出来的hashcode是不同的。而s1和s3共享内存地址,所以计算出来的hashcode是一样的。 460141958 1163157884 460141958 Process finished with exit code 0
3.toString()
- 返回该对象的字符串(表示形式)
- 可以根据程序需求覆盖该方法,如:展示对象各个属性值(重写方法)
- 当父类提供的方法满足不了我们的需求可以重写该方法!
//重写 @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } //输出 System.out.println(s1.toString()); System.out.println(s2.toString()); //结果 Student{name='tansk', age=18} Student{name='tanmy', age=19}
4.equals()
- 不能用来比较常量
- 比较两个对象的内容(字符串值)是否相等
//重写equals @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; //判断age和name相同的时候,返回true return age == student.age &&Objects.equals(name, student.name); } public class TestStudent { public static void main(String[] args) { Student s1 = new Student("tansk", 18); Student s2 = new Student("tansk", 18); System.out.println(s1.equals(s2)); } } //结果,如果不重写equals方法,s1.equals(s2)对比他们两个的地址,得到的是false true false
5.finalize()
注意:一般程序员是不会调用此方法的!!!
- 当对象被判定为垃圾时,由jvm调用此方法用来标记垃圾对象,进入回收队列
- 垃圾对象:没有有效引用指向此对象时,就是垃圾对象
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间
- 自动回收机制:jvm的内存耗尽,一次性回收所有垃圾对象
- 手动回收机制:手动调用System.gc;通知JVM执行垃圾回收,垃圾到底回收了没有,还是jvm自己判断的,我们无权干预
相关文章推荐
- java代码之美(3)---guava 复写Object常用方法
- Object-oc常用占位符
- 黑马程序员——java-几个常用的类(Object,Scanner,String,StringBuffer/StringBuilder)
- Object-C NSLog 常用输出基本数据类型格式
- Cocos2d-X对常用Object-C特性的替换
- Object-C 实现MD5常用实例
- jQuery核心之jQuery Object及其相关的常用方法
- Object-C中的常用算法
- Java入门—Object与String中常用方法
- 对象(Object)常用方法、对象拷贝
- Javascript中Object常用方法学习
- Guava学习笔记:复写的Object常用方法
- Java之三大类String、Object及包装类的常用方法以及注意点
- js Object常用方法(一)
- 【object-c基础】Object-c基础之五:在项目开发中Xcode的常用功能
- Object常用方法
- es6 对Object类型做的一些常用升级优化
- js中Object常用方法和属性
- Cocos2d-X对常用Object-C特性的替换
- Object的toString方法:Object的equals方法:System类的概念和构造:冒泡排序,自动装箱拆箱, Date类的常用方法:6 SimpleDateFormat的概述: