Javase之object类的概述
object类的概述
object类是类层次结构的根类,每个类都使用object作为超类。
即每个类都直接或间接的继承object类。
object类中方法介绍
hashCode
public int hashCode():返回对象的哈希码值。
注意:哈希值是根据哈希算法计算出来的一个值,该值与地址值有关,但不是实际的值。可理解为地址值。
getClass
public final Class<?> getClass():返回object运行时类,得到一个Class对
象。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象
。
在Class类中有getname()方法以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
toString
public String toString():返回该对象的字符串表示。
toString方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
源码:
public String toString() {
return getClass().getName() + "@" +
Integer.toHexString(hashCode());
}
ps:Integer.toHexString()为Integer类下一静态方法,
public static String toHexString(int i):以十六进制(基数 16)无符号
整数形式返回一个整数参数的字符串表示形式。
toString()方法返回的信息是无意义的。所以建议所以子类重写改方法。
重写的格式为:把所有成员变量值返回即可。
但这样不是最好,最好由编译器自动生成即可。
class Test{
int num;
//此处是自动生成的代码
@Override
public String toString() {
return "Test [num=" + num + "]";
}
}
class Main{
public static void main(String[] args){
Test t = new Test();
//测试直接输出对象的结果
System.out.println(t);
}
}
out:
Test [num=0]
直接输出一个对象的名称,就是调用改对象的toString()方法。
equals
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
Object类中的源码:
public boolean equals(Object obj) {
return (this == obj);
}
通过查看Object类中的equals()源码可知在没有重写equals()的情况下,equals()方法是由"=="实现。
==:
基本类型:比较值是否相等。
引用类型:比较其地址值是否相等。
equals()方法,默认情况比较的是地址值,但是比较地址值意义不大,所以要重写改方法。
在方法重写时,比较对象的成员变量值是否相同。
重写代码优化:提高效率,提高程序健壮性。
要想做到最好优化还是自动生成。(自动生成时会和hascode()方法一起生成。至于为什么这两个方法需要同时生成在集合中有解释)
class Test{
int num;
String sfa;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + num;
result = prime * result + ((sfa == null) ? 0 : sfa.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Test other = (Test) obj;
if (num != other.num)
return false;
if (sfa == null) {
if (other.sfa != null)
return false;
} else if (!sfa.equals(other.sfa))
return false;
return true;
}
}
注:此为eclipse生成可能与idea生成的有所不同,但效果一样。
finalize
protected void finalize() throws Throwable :当垃圾回收器确定不存在
对该对象的更多引用时,由对象的垃圾回收器调用此方法。
clone
protected Object clone() throws CloneNotSupportedException:创建并
返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。
Cloneable:如果一个类想要实现clone()方法,那么此类需要实现了Cloneable接口,以示Object.clone()方法合法的进行对该类的按字段复制。
Cloneable是一个标记接口,表明实现该接口的类可以实现对象的复制。
Javase之object类的概述的更多相关文章
- Java基础知识强化26(1):Object类之Object类的概述
1.Object类 类Object是类层次结构的根类,每个类都使用 Object作为超类.所有对象(包括数组)都实现这个类的方法 每个类直接或者间接继承自Object类 2.Object类无参构造 ...
- 07 Object类,Scanner,Arrays类,String类,StringBuffer类,包装类
Object类的概述:* A:Object类概述 * 类层次结构的根类 * 所有类都直接或者间接的继承自该类* B:构造方法 * public Object() * 子类的构造 ...
- 开发工具、Object类(java基础知识十一)
1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE * (Integrated Development Environment) * ...
- Object类入门这一篇就够了!
第三阶段 JAVA常见对象的学习 第一章 常见对象--Object类 引言: 在讲解Object类之前,我们不得不简单的提一下什么是API,先贴一组百度百科的解释: API(Application P ...
- Java中特殊的类——Object类
Java中特殊的类--Object类 1.Object类的概述 Object类是java默认提供的类.Java中除了Object类,所有的类都是有继承关系的.默认会继承Object类,即所有的对象都可 ...
- Java 面向对象概述原理: 多态、Object类,转型(8)
Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...
- Object类概述
Object:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.每个类都直接或者间接的继承自Object类. Object类的方法:public int hashCode() ...
- JavaSE基础知识(5)—面向对象(Object类)
一.包 java.lang包,属于java中的核心包,系统默认导入的,不用手动导入该包中的类:Object.System.String.Integer等 1.包的好处 ①分类管理java文件,查找和管 ...
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...
随机推荐
- linux命令--网络命令
一.网络命令 1.配置ip 1.1 配置 IP 地址 IP 地址是计算机在互联网中唯一的地址编码.每台计算机如果需要接入网络和其他计算机进行数 据通信,就必须配置唯一的公网 IP 地址. 配置 IP ...
- JavaScript空字符串判断
JavaScript空字符串判断 本文完整示例代码GIT仓: 测试用例完整代码:isNullOrEmpty jPublic GIT仓:jPublic 比较常见写法 if (str == 'undefi ...
- 基于STM32F429的ADS1115驱动程序
1.ADS1115中文资料:https://wenku.baidu.com/view/8bab101feef9aef8941ea76e58fafab069dc44e7.html?rec_flag=de ...
- ES6-数字操作,判断是否是整数,判断最大值最小值
S中只有一种类型数,即64位(1bit 的符号位,11bits 的指数部分 ,以及52bits 的小数部分)双精度浮点数,当整数数值过大时,就会发生精度丢失. 所谓安全整数即能够唯一确定的数字,即能够 ...
- IE11,用Forms身份验证保存不了Cookie
在web.config中添加如下信息,即可. <authentication mode="Forms"> <forms cookieless=" ...
- Flutter学习笔记(19)--加载本地图片
如需转载,请注明出处:Flutter学习笔记(19)--加载本地图片 上一篇博客正好用到了本地的图片,记录一下用法: 首先新建一个文件夹,这个文件夹要跟目录下 然后在pubspec.yaml里面声明出 ...
- cgo在mac上编译
用了cgo mac上编译不过的可以试试下面的方法 ../../pkg/mod/github.com/mattn/go-sqlite3@v1.:: fatal error: 'stdlib.h' fil ...
- Linux命令(自己工作常用)
添加用户--root角色才有权限 useradd -d主目录 -m username useradd -d /home/hadoop2 -m hadoop2; 删除用户 userdel -f user ...
- Kali设置1920x1080分辨率
root@kali:~# xrandr --newmode -hsync +vsync root@kali:~# xrandr --addmode Virtual1 1920x1080 root@ka ...
- 201871010124 王生涛《面向对象程序设计JAVA》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...