常见对象·Object类

Object类的概述

* A:Object 类概述
  * 类层次结构的根类
  * 所有类都直接或间接地继承自该类

* B:构造方法
  * public Object()
  * 回想为什么面向对象中说:
    子类的构造方法默认访问的是父类的无参构造

Object类的 hashcode() 方法 (在学集合时掌握)

* A:案例演示
  * public int hashCode()
  * a:返回该对象的哈希码值,默认情况下,该方法会根据对象的地址值来计算,调用系统的本地资源进行计算
  * b:不同对象的 hashCode() 一般来讲不会相同,但是对同一个对象的 hashCode() 值肯定相同
  * c:不是对象的实际地址值,可以理解为逻辑地址值
    * 举例:物体和编号

package com.heima.object;

import com.heima.bean.Student;

public class Demo1_HashCode {

    public static void main(String[] args) {
Object obj1 = new Object();
int hashcode = obj1.hashCode();
System.out.println(hashcode); Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 11); // 不同对象的地址不同 System.out.println(s1.hashCode()); // ctrl + alt + 下键 向下复制一行
System.out.println(s2.hashCode());
} }

hashCode() 方法

Object类的 getClass() 方法 (在学反射时掌握)

* A:案例演示
  * public final Class getClass()
  * a:返回此 Object 对象的运行时类
  * b:可以通过 Class 类中的一个方法,获取对象的真是类的全名称
    * public String getName()

package com.heima.object;

import com.heima.bean.Student;

public class Demo2_GetClass {

    public static void main(String[] args) {
Student s = new Student("张三", 18); // Class clazz = new Class();
Class clazz = s.getClass(); // 获取该对象的字节码文件
String nameString = clazz.getName(); // 获取类名 System.out.println(nameString); } }

getClass() 和 getName()

Object类的 toString() 方法

* A:案例演示
  * public String toString()
  * a:返回该对象的字符串表示

// 默认方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

  * b:它的值等于
    * getClass() . getName() + "@" + Integer.toHexString(hashCode())
  * c:由于默认状态下的数据对我们来说没有意义,一般建议重写该方法

* B:最终版本
  * 自动生成

@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}

Student类 内重写 toString方法

package com.heima.object;

import com.heima.bean.Student;

public class Demo3_ToString {
/*
* 重写前:
* 左边:类名
* 中间:@
* 右边:hashCode的十六进制表现形式
*/
public static void main(String[] args) {
Student s = new Student("张三", 23);
String str = s.toString(); //toString()的作用: 可以更方便地显示属性值
//getXxx方法用于获取值,可以用于显示,也可以对值进行操作 System.out.println(str);
System.out.println(s); //如果直接打印对象名,会默认调用toString方法 //alt shift s 重写toString方法
} }

toString() 方法

Object类的 equals() 方法

* A:案例演示
  * a:指示其他某个对象是否与此对象 “相等”
  * b:默认情况下比较的是对象的引用是否相同
  * c:由于比较对象的引用没有意义,一般建议重写该方法

// 默认方法
public boolean equals(Object obj) {
return (this == obj);
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) 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;
}

Student类 内重写 equals方法

package com.heima.object;

import com.heima.bean.Student;

public class Demo3_Equals {
/*
* equals 默认比较地址值
* public boolean equals(Object obj) {
return (this == obj);
* }
* object中的equals方法是比较对象的地址值,没有什么意义,我们需要重写
* 因为在开发中我们通常比较的是对象中的属性值,我们认为相同属性是同一个对象
*/
public static void main(String[] args) {
Student s1 = new Student("张三", 18);
Student s2 = new Student("张三", 18);
boolean b = s1.equals(s2); // 重写后比较对象中的属性值
System.out.println(b);
System.out.println(s1 == s2);
} }

equals() 方法

== 号 和 equals()方法 的区别

* 共同点:都可以做比较,都返回boolean值

* 区别:

  * == 是一个比较运算符,既可以比较基本数据类型,也可以用于比较引用数据类型
    基本数据类型比较的是值,引用数据类型比较的是地址值

  * equals() 方法 是一个方法,只能比较引用数据类型,所用的对象都会继承Object类 中的方法
    如果没有重写Object类中的方法,equals() 方法和 == 号比较引用数据类型 无区别,重写后的equals() 方法 比较的是对象中的属性值

Java 常见对象 01的更多相关文章

  1. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  2. Java 常见对象 05

    常见对象·正则表达式 和 其他类 正则表达式的概述和简单使用 * A:正则表达式 * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则,有自己的特殊应用 * 作用: ...

  3. Java 常见对象 03

    常见对象·StringBuffer类 StringBuffer类概述 * A:StringBuffer类概述 * 通过 JDk 提供的API,查看StringBuffer类的说明 * 线程安全的可变字 ...

  4. Java 常见对象 02

    常见对象·String类 Scanner 的概述和方法介绍 * A:Scanner 的概述 * B:Scanner 的构造方法原理 * Scanner(InputStream source) * Sy ...

  5. Java 常见对象 04

    常见对象·Arrays 类和 包装类 数组高级冒泡排序原理图解 * A:画图演示 * 需求: 数组元素:{24, 69, 80, 57, 13} 请对数组元素进行排序 * 冒泡排序: 相邻元素两两比较 ...

  6. Java常见对象之String

    String类的概述 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.字符串是常量,一旦被赋值,就不能被改变. String ...

  7. Java常见对象内存分析

    首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...

  8. day11<Java开发工具&常见对象>

    Java开发工具(常见开发工具介绍) Java开发工具(Eclipse中HelloWorld案例以及汉化) Java开发工具(Eclipse的视窗和视图概述) Java开发工具(Eclipse工作空间 ...

  9. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

随机推荐

  1. Dapr 已在塔架就位 将发射新一代微服务

    微服务是云原生架构的核心,通常使用Kubernetes 来按需管理服务扩展. 微软一直走在 Cloud Native Computing Foundation的 最前沿,并通过使用Kubernetes ...

  2. OpenStack Train版-15.创建并挂载存储卷

    1.创建并挂载存储卷 创建一个1GB的卷 source ~/demo-openrc openstack volume create --size 1 volume1 很短的时间后,卷状态应该从crea ...

  3. ThinkCMF框架任意内容包含漏洞分析复现(写入shell+文件包哈)

    ThinkCMF框架任意内容包含漏洞分析复现 0x00 简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建.ThinkCMF提出灵活的应用 ...

  4. 链接脚本再探和VMA与LMA

    链接脚本简单描述 连接脚本的描述都是以节(section)的单位的,网上也有很多描述链接脚本语法的好文章,再不济还有官方的说明文档可以用来学习,其实主要就是对编译构建的整个过程有了深入的理解后就能对链 ...

  5. vue watch route params change

    vue watch route params change watch: { '$route.params.menuKey' (val, oldVal) { console.log('new rout ...

  6. 慕课网站 & MOOC website

    慕课网站 & MOOC website MOOC, massive open online course Mooc for everyone ! 国家精品课程 & 在线学习平台 慕课平 ...

  7. vue component :is

    vue component :is Vue <component> element https://vuejs.org/v2/guide/components.html#Dynamic-C ...

  8. Lua 从入门到放弃

    Lua 从入门到放弃 What is Lua? Lua is a powerful, efficient, lightweight, embeddable scripting language. It ...

  9. Bastion Host (BH)

    Bastion Host (BH) 堡垒机 堡垒主机是专门设计和构造成承受攻击网络上的专用计算机. 该计算机通常承载单个应用程序,例如代理服务器,并且所有其他服务都将被删除或限制以减少对计算机的威胁. ...

  10. Learning JavaScript with MDN (call, apply, bind)

    Learning JavaScript with MDN (call, apply, bind) call, apply, bind Object.prototype.toString() 检测 js ...