常见对象·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. vi、wc、gzip、bzip2、tar、yum安装、dpek、用户信息操作等命令

    命令模式 输入"dd"即可将这一行删除 按下"p"即可粘贴 插入模式: a:从光标这个位置之后插入 A:在行尾插入 i:从光标之前插入 I:行首插入 o:在光标 ...

  2. Windows Terminal 更换主题

    1. 打开设置,是个json文件 2. 在此处获取主题配置:https://atomcorp.github.io/themes/ 3.将主题配置粘贴到schemes节点(可以增加N个) 4.配置每个命 ...

  3. Python+Appium实现自动抢微信红包

    前言 过年的时候总是少不了红包,不知从何时开始微信红包横空出世,对于网速和手速慢的人只能在一旁观望,做为python的学习者就是要运用编程解决生活和工作上的事情. 于是我用python解决我们的手速问 ...

  4. 在kubernetes集群里集成Apollo配置中心(3)之交付Apollo-portal至Kubernetes集群

    1.执行apollo-portal数据库脚本 apollo-portal数据库脚本链接:https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1 ...

  5. Linux POSIX共享内存方法&ipcs &struct shmid_ds

    内容是主进程创建子进程计算斐波那契数列. 其中计算到第几项是有主进程命令行输入. 共享内存段,并且查看了一些信息. 参考操作系统概念第七版 3.10,3.11 关于LINUX C库函数 中的 fpri ...

  6. 什么是 DNS 的 A记录 和 CNAME记录 域名解析 为我的自定义域名创建 CNAME 记录

    # CNAME https://support.google.com/blogger/answer/58317?hl=zh-Hans 为我的自定义域名创建 CNAME 记录 如果您的域名不是在 Blo ...

  7. 如何用 js 实现一个 apply 函数

    如何用 js 实现一个 apply 函数 原理 实现方式 总结 refs https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referen ...

  8. chroot vs docker

    chroot vs docker chroot Linux A chroot on Unix operating systems is an operation that changes the ap ...

  9. auto switch HTTP protocol Chrome Extension

    auto switch HTTP protocol Chrome Extension HTTPS auto switch to HTTP VPN https://chrome.google.com/w ...

  10. JavaScript console.log Questions All In One

    JavaScript console.log Questions All In One "use strict"; /** * * @author xgqfrms * @licen ...