Java常见对象Object类

public int hashCode() : 返回该对象的哈希码值。

  注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值。你可以理解成地址值。

package common_object;

public class Demo extends Object{

}

package common_object;

public class DemoTest {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.hashCode()); //
Demo d2 = new Demo();
System.out.println(d2.hashCode()); //
}
}

public final Class getclass() : 返回此Object的运行时类

  Class类的方法:public String getName() : 以String 的形式返回此Class对象所表示的实体。

package common_object;

public class Demo extends Object{

}

package common_object;

public class DemoTest {
public static void main(String[] args) {
Demo d = new Demo();
Class c = d.getClass();
System.out.println(c.getName()); //common_object.Demo
String str = new Demo().getClass().getName();
System.out.println(str); //common_object.Demo
}
}

public String toString() : 返回该对象的字符串表示。

Integer类下的静态方法:public static String toHexString(int i) : 把一个整数转成一个十六进制表示的字符串。

package common_object;

public class Demo extends Object{

}

package common_object;

public class DemoTest {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.hashCode()); //
System.out.println(d.getClass().getName()); //common_object.Demo
System.out.println("-----------------------");
System.out.println(d.toString()); //common_object.Demo@707f7052
//toString() 方法的值等价于
//getClass().getName() + '@' + Integer.toHexString(hashCode())
//就等于
//this.getClass().getName() + '@' + Integer.toHexString(this.hashCode())
System.out.println("-----------------------");
System.out.println(d.getClass().getName() + '@' + Integer.toHexString(d.hashCode()));
System.out.println(d.toString());
//common_object.Demo@707f7052
//common_object.Demo@707f7052
}
}

这个信息的组成我们讲解了,但是这个信息是没有任何意义的,所以,建议所有的子类都重写该方法。

  把该类的所有成员变量的值组成返回即可。重写的最终版方案就是自动生成toString()方法。

  注意:直接输出一个对象的名称就是调用该对象的toString() 函数。

  如何自动生成toString()方法。-------   .java 程序界面上,点击右键,选择 Source (Alt + Shift + S),在选择Generate toString...就可以了。

//重写toString() 方法。
package common_object; public class Demo extends Object{
private String name;
private int age;
public Demo() {
super();
// TODO Auto-generated constructor stub
}
public Demo(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {                      
return "Demo [name=" + name + ", age=" + age + "]"; //这里就是toString()方法的重写。
} }
package common_object; public class DemoTest {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.hashCode()); //
System.out.println(d.getClass().getName()); //common_object.Demo
System.out.println("-----------------------");
System.out.println(d.toString()); //Demo [name=null, age=0] 在这里改变
//toString() 方法的值等价于
//getClass().getName() + '@' + Integer.toHexString(hashCode())
//就等于
//this.getClass().getName() + '@' + Integer.toHexString(this.hashCode())
System.out.println("-----------------------");
System.out.println(d.getClass().getName() + '@' + Integer.toHexString(d.hashCode()));
System.out.println(d.toString());
//common_object.Demo@707f7052
//Demo [name=null, age=0] 这里也有改变
}
}

public boolean equals(Object obj) : 指示其他某个对象是否与此对象“相等”。

  这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们又要重写这个函数。

  一般都是用来比较对象成员变量值是否相同。

  重写最终版可以利用 eclipse 自动生成。 -------   .java 程序界面上,点击右键,选择 Source (Alt + Shift + S),在选择Generate hashCode() 和 equals()... 就可以了。

package common_object;

public class Demo extends Object{
private String name;
private int age;
public Demo() {
super();
// TODO Auto-generated constructor stub
}
public Demo(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
//另一种表示方法:
//格式:对象名 instanceof 类名
//表示:判断对象名是否是该类名一个对象
//if (!(obj instanceof Demo))
// return false;
return false;
Demo other = (Demo) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
} package common_object; public class DemoTest {
public static void main(String[] args) {
Demo d1 = new Demo("白",21);
Demo d2 = new Demo("黑",20);
System.out.println(d1.equals(d2)); // false
}
}

Java常见对象Object类中的个别方法的更多相关文章

  1. Java Object类中的equals方法

    Object类中的equals方法用于检测一个对象是否等于另外一个对象.在Object类中,这个方法将判断两个对象是否具有相同的引用.如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为 ...

  2. Object 类中的 equals方法

    1 相等与同一 如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等.如果两个引用对象指的是同一个对像,则称这两个变量同一.Object类中定义的equals 函数原型为:public bo ...

  3. 25. object类中的一些方法分析

    1. Object java是面向对象语言,所以其核心思想: 找合适的对象,做合适的事 Object是所有类的终极基类.任何一个类都继承了Object类 2. Object的部分函数列表 1)Stri ...

  4. 重写Object类中的equals方法

    Object是所有类的父亲,这个类有很多方法,我们都可以直接调用,但有些方法并不适合,例如下面的student类 public class Student { //姓名.学号.年纪 private S ...

  5. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  6. Java 常用对象-Object类

    2017-10-31 23:42:08 Object类:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 或者说,每个类都直接或者间 ...

  7. Java基础:Object类中的equals与hashCode方法

    前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象   对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...

  8. 常见对象-Object类

    Object类概述 是类层次结构的根类,每个类都直接或者间接继承该类. eg: 1.class Student extends Object{}  //直接继承 2.class Student ext ...

  9. [Python之路] object类中的特殊方法

    一.object类的源码 python版本:3.8 class object: """ The most base type """ # d ...

随机推荐

  1. 洛谷 - P1593 - 因子和 - 费马小定理

    类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了.使用一些其他方法避免通过逆元. https://www.luogu.org/fe/problem/P1593 有坑.一定 ...

  2. Lightoj 1147【DP】

    题意: 把n个人分成两部分,要你怎么分使得两部分尽可能相等: 思路: 如果我们把一部分人的重量达到离sum/2最近,那就一定行啊 其实就是一条棒,两种不同的棒去拼接成一条棒,然后最好就是离mid最近, ...

  3. 适合新手看的超详细CentOS Linux 7 安装Tomcat8过程

    非常详细的安装Tomcat8的步骤,适合新手学习.废话不多说,直接干! 前提条件 1. 已有可直接连接的CentOS7系统 2. CentOS7系统已安装Java JDK 8 下载Tomcat8 下载 ...

  4. Codevs 1140 Jam的计数法

    1140 Jam的计数法 题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个 ...

  5. iOS中UIWebView使用JS交互

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...

  6. VRTK3.3.0-004传送

    直线传送: 一.无高度变换传送(VRTK_BasicTeleport) 1丶继续在VRScripts下创建空物体PlayArea,用来挂在传送相关脚本:创建Plane作为传送地面 2丶在PlayAre ...

  7. mysql--浅谈视图1

    这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师. 依赖软件:mysql5.6 系统环境:win 视图(view) 什么是视图? 答:视图是表通过某种运算得到的一个投影,占有一定空间的 ...

  8. 浅谈H5技术

    1.什么是H5:HTML5将成为HTML.XHTML以及HTML  DOM的新标准.目前仍处于完善之中.然而,大部分现代浏览器已经具备了某些HTML5支持. 2.背景:HTML5 是 W3C 与 WH ...

  9. DISTINCT 去重---SQL

    SQL SELECT DISTINCT 语句 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值. DISTINCT 关键词用于返回唯一不同的值. SQL SELE ...

  10. TYVJ 2032 搜索

    P2032 「Poetize9」升降梯上 描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨 ...