Day11学习笔记
目录
Object类中方法
java.lang 这个包下的类可以不用导包
$ :内部类
Object类是一个顶层父类,所有类,都是直接或间接继承他
hashcode();不同对象的哈希码值是不一样
**getclass():**a:返回此 Object 的运行时类;b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
Object.class(字节码文件)–>这个文件加载进内存---->JVM就会把该类的字节码文件看作对象
就要为Object.class创建一个对象,这个对象我们叫做字节码文件对象,用Class表示字节码类型
你调用Getclass()是想要将字节码文件对象获取出来用
Object中**tostring()**方法源码:
this.getClass().getName()+"@"+Integer.toHexString(this.hashcode());
返回该对象的字符串表现形式
例如:student 继承 Object ,子类在调用toString()会打印对象的地址值,我们认为,老看地址值意义不大,**通过toString打印成员变量的值,**所以子类重写父类的toString()方法。
如果以后打印一个对象,输出的不是地址值,说明该类重写了toString()方法
equals();比较两个对象的地址值是否相同
equals()与==有什么区别
==比较运算符,他可以比较基本数据类型,也可以比较引用数据类型
比较基本数据类型,比较的是两个值是否相同;比较引用数据类型:比较的是地址值是否相同;
equals()是Object类中的方法,只能比较引用数据类型,比较的是两个对象的地址值
instanceof:判断一个引用是不是该类型的一个引用
克隆clone()受保护的 让子类重写一下,把方法的修饰符改为public 重写逻辑还是父类的
implements cloneable这种接口中没有任何的抽象方法的接口,我们称之为标记接口
标记接口该类打一个标记,是告诉JVM我要完成某种操作
浅克隆:1. 如果一个对象需要调用clone的方法克隆,那么该对象所属的类必须要实现Cloneable接口;2.Cloneable接口只不过是一个标识接口而已,没有任何方法;3.对象的浅克隆就是克隆一个对象的时候,如果被克隆的对象中维护了另外一个类的对象,这时候只是克隆另外一个对象的地址,而没有把另外一个对象也克隆一份;4.对象的浅克隆也不会调用到构造方法的。
深克隆:采用IO流来实现 使用 ObjectOutputStream 将对象写入文件中,然后再用ObjectInputStream读取回来
补充:jar— java 指定的压缩格式
压缩了很多class文件
学会打jar包
学会用jar包