java_13.2 Object
1.类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法
2.hashCode()方法
返回该对象的哈希值。一般情况下,该方法会根据对象的地址值来计算。
不同的对象hashCode()一般来说不会相同,但同一个对象的hashCode值肯定一样。
不是对象的实际地址值,可以理解为逻辑地址值。

package demo1;
public class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
int hashcode = s1.hashCode();
System.out.println(hashcode);
}
}

3getClass()方法
返回Object的运行时类
可以通过Class的一个getName()方法来获得类的全名。

package cn.smx.demo1;
public class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Class clazz = s1.getClass();
String str = clazz.getName();
System.out.println(str);
}
}

4.toString()方法
package cn.smx.demo1;
public class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
String s = s1.toString();
System.out.println(s);
}
}

为了更好的获得属性值,我们会重写toString()方法。在eclipse中有快捷键生成toString()方法。右击-->source-->generate toString()..-->select all.
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
System.out.println(s1);
}
5.equals()方法
比较对象的地址值

package demo1;
public class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Student s2 = new Student("张三", 23);
boolean b = s1.equals(s2);
System.out.println(b);
}
}

没有什么意义,一般来比较对象中的属性值。属性值相同,我们认为是同一个对象。
重写equals方法。
public boolean equals(Object obj) {
if(this==obj) {
return true;
}
if(obj==null) {
return false;
}
if(obj instanceof Person) {
Person p = (Person)obj;
if(this.age==age&&this.name==name)
return true;
}
return false;
}
主函数:
public static void main(String[] args) {
Person p = new Person("zhangsan",23);
Person p1 = new Person("zhangsan",23);
boolean b = p.equals(p1);
System.out.println(b);
System.out.println(p);
System.out.println(p1);
}

==和equals都可以作比较
区别是:1.==号是比较运算符,既可以比较基本数据类型(比较值),又可以比较引用数据类型(比较地址值)。
2.equals方法在没重写之前比较的是地址值,底层依赖==号。我们需要重写equals方法,比较对象中的属性值。只能比较引用数据类型。
java_13.2 Object的更多相关文章
- CoreCLR源码探索(一) Object是什么
.Net程序员们每天都在和Object在打交道 如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" 这个答案是对的 ...
- JavaScript Object对象
目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...
- javascript之Object.defineProperty的奥妙
直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...
- c# 基础 object ,new操作符,类型转换
参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...
- APEX:对object中数据进行简单处理?
在Salesforce中,常常要对各种数据进行处理,已满足业务逻辑.本篇文章会介绍如何实现从object获取数据,然后将取得的数据进行一系列简单处理. 第一步:SongName__c 是一个新建的ob ...
- 笔记:Memory Notification: Library Cache Object loaded into SGA
笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...
- Selenium的PO模式(Page Object Model)[python版]
Page Object Model 简称POM 普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...
- Object是什么
Object是什么 .Net程序员们每天都在和Object在打交道如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类" ...
- a different object with the same identifier value was already associated with the session:
hibernate操作: 实例化两个model类,更新时会提示 a different object with the same identifier value was already assoc ...
随机推荐
- 对于两个初始时设置为Sensor的刚体,不会触发preSolve和postSolve
Main.as package{ import Box2D.Common.Math.b2Vec2; import Box2D.Dynamics.b2Body; import Box2D.Dynamic ...
- 讲一讲Servlet和JSP的关系
Test.jsp在运行时首先被解析成一个java类Test_jsp.java,该类继承于org.apache.jasper.runtime.HtppJspBase类,而Http又是继承HttpServ ...
- linux文件和目录的删除、新建、移动等操作
在Linux下进行切换目录 cd 在Linux下查看当前目录下的内容 ls. ll. ls -al 如何显示当前命令所在的目录路径 pwd 在Linux下创建目录 mkdir 在L ...
- c 时间 学习
linux #include <stdio.h> #include <time.h> int main(int argc,char **argv) { //两种时间的获取方法 ...
- Data URI scheme - 数据的uri模式
----------------------------------------------------------------------------------------------- Data ...
- 如何查看Python对象的属性
在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...
- C++ 原来 const 中所使用的函数 必须 全都具有 const 才行
今天在写程序的时候,出现了一个错误 "对象包含与成员函数不兼容的类型限定符",从网上查了一下,原来原因是这样子的 void showPair();改成 void showPair ...
- C# 图像处理: 获取当前活动窗口句柄,获取窗口大小及位置
需调用API函数 需在开头引入命名空间 using System.Runtime.InteropServices; 获取当前窗口句柄:GetForegroundWindow() [DllImport( ...
- 微信小程序---导航
1.wx.navigateTo(OBJECT):保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面. wx.navigateTo({ url: 'test?id= ...
- gradle 很好用的么
Gradle 其实是很好用的 2017, Apr 14 by Tesla Ice Zhang Gradle 是一款使用 Kotlin (划掉) Groovy 编写的 JVM 构建工具,其易用性和 Ma ...