Java-Object类

二、Object类:

  1. 概念:
    I. 超类、基类,所有类的直接或间接父类,位于继承树的最顶层。
    II. 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。
    III. Object类中所定义的方法,是所有对象都具备的方法。
    Object o = new Object();
    IV. Object类型可以存储任何对象(多态)
    1). 作为参数,可接受任何对象。
    2). 作为返回值,可返回任何对象。

  2. 常用方法:
    I. public final Class<?> getClass(){}
    返回引用中存储的实际对象类型。
    Student s = new Student();
    System.out.println(s.getClass()); = class objects.Student
    if(s.getClass() == s1.GetClass()){} ==判断对象是否一致
    应用:通常用于判断两个引用中实际存储对象类型是否一致。

II. public int hashCode(){}
一个对象的整数表现形式(整数型的名字)。
返回该对象的十进制的哈希码值。
哈希算法根据 (物理)对象的地址或字符串或数字计算出来的int类型的数值。
哈希码并不唯一,可保证相同对象返回相同哈希码,尽量保证不同对象返回不同哈希码。
Object o = new Object();
System.out.println(o.hashCode());

III. public String toString(){}
返回该对象的字符串表示(表现形式,在控制台表现出来)。
通常,toString方法返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object类的toString方法返回一个字符串,该字符串类名(对象该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于“
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
可以根据程序需求覆盖该方法,如:展示对象各个属性值。

IV. public boolean equals(Object obj){}
默认实现为(this == obj),比较两个对象地址是否相同。
可进行覆盖,比较两个对象的内容是否相同。

V. 覆盖equals的顺序:
1). 比较两个引用是否指向同一个对象。
2). 判断obj是否为null。
3). 判断两个引用指向的实际对象类型是否一致。
4). 强制类型转换。
5). 依次比较各个属性值是否相同。

VI. protected void finalize() throws Throwable //了解(面试题中可能有坑)
当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。
垃圾对象:没有有效引用指向此对象时,为垃圾对象。
垃圾回收: 由GC销毁垃圾对象,释放数据存储空间。
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
手动回收机制:使用System.gc(); 通知JVM执行垃圾回收。

附加源代码:Windows --> Preferences --> Java --> Installed JREs --> 选中JRE --> Edit --> xxx/rt.jar --> Source Attachment --> External Location --> External File 选中src.zip

三、包装类:

  1. 概念:
    I. 基本类型所对应的引用类型
    II. Object可统一所有数据,包装类的默认值为null
    III. 包装类中实际上就是持有了一个基本类型的属性,作为数据的存储空间(Byte中有一个byte属性),还提供了常用的转型方法,以及常量,
    既可以存储值,又具备了一系列的转型方法和常用常量,比直接使用基本类型的功能更强大。
    IV. 包装类型中提供了若干转型的方法,可以让自身类型与其他包装类型、基本类型、字符串相互之间进行转换。

  2. 转型方法:
    I. 8种包装类型中,有6种是数字型(Byte、Short、Integer、Long、Float、Double),继承自java.lang.Number父类。
    II. java.lang.Number父类为所有子类分别提供了6个转型的方法,将自身类型转换成其他数字型。
    byteValue();
    shortValue();
    intValue();
    longValue();
    floatValue();
    doubleValue();

III. parseXXX(String s) 静态转型方法,7种包装类型都有,除了Character,都可以通过String进行构建
parseByte(“123”);
parseShort(“123”);
parseInt(“123”);
parseDouble(“123.45”);

IV. valueOf(基本类型)、valueOf(字符串类型),静态转型方法,8种包装类型都有
Byte b1 = Byte.valueOf( (byte)10 );
Byte b2 = Byte.valueOf( “20” );

V. 注意:在使用字符串构建包装类型对象时,要保证类型的兼容,否则产生NumberFormatException。

VI. JDK5之后,提供自动装箱、拆箱,简化使用包装类的编程过程
Byte b4 = 40;//自动装箱,将基本类型直接赋值给包装类型,调用valueOf(byte b)
byte b5 = b4;//自动拆箱,将包装类型的值,直接赋值给基本类型,调用byteValue()

VII. 自动装箱时,会调用valueOf方法,Byte、Short、Integer、Long,四种整数包装类型都提供了对应的cache缓冲区,将常用的256个数字提 前创建对象并保存在数组中,实现复用。即在区间的复用已有对象,在区间外创建新对象。

四、String:

  1. 概念:
    I. 字符串是常量,创建之后不可改变。
    II. 字符串字面值存储在字符串池中,可以共享。
    III. String s = “Hello”; 产生一个对象,保存在池中
    IV. String s2 = new String(“World”); 产生两个对象,池、堆各一个

  2. 常用方法:参考API文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值