常见对象·Object类

Object类的概述

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

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

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

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

  1. package com.heima.object;
  2.  
  3. import com.heima.bean.Student;
  4.  
  5. public class Demo1_HashCode {
  6.  
  7. public static void main(String[] args) {
  8. Object obj1 = new Object();
  9. int hashcode = obj1.hashCode();
  10. System.out.println(hashcode);
  11.  
  12. Student s1 = new Student("张三", 23);
  13. Student s2 = new Student("李四", 11); // 不同对象的地址不同
  14.  
  15. System.out.println(s1.hashCode()); // ctrl + alt + 下键 向下复制一行
  16. System.out.println(s2.hashCode());
  17. }
  18.  
  19. }

hashCode() 方法

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

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

  1. package com.heima.object;
  2.  
  3. import com.heima.bean.Student;
  4.  
  5. public class Demo2_GetClass {
  6.  
  7. public static void main(String[] args) {
  8. Student s = new Student("张三", 18);
  9.  
  10. // Class clazz = new Class();
  11. Class clazz = s.getClass(); // 获取该对象的字节码文件
  12. String nameString = clazz.getName(); // 获取类名
  13.  
  14. System.out.println(nameString);
  15.  
  16. }
  17.  
  18. }

getClass() 和 getName()

Object类的 toString() 方法

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

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

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

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

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

Student类 内重写 toString方法

  1. package com.heima.object;
  2.  
  3. import com.heima.bean.Student;
  4.  
  5. public class Demo3_ToString {
  6. /*
  7. * 重写前:
  8. * 左边:类名
  9. * 中间:@
  10. * 右边:hashCode的十六进制表现形式
  11. */
  12. public static void main(String[] args) {
  13. Student s = new Student("张三", 23);
  14. String str = s.toString();
  15.  
  16. //toString()的作用: 可以更方便地显示属性值
  17. //getXxx方法用于获取值,可以用于显示,也可以对值进行操作
  18.  
  19. System.out.println(str);
  20. System.out.println(s); //如果直接打印对象名,会默认调用toString方法
  21.  
  22. //alt shift s 重写toString方法
  23. }
  24.  
  25. }

toString() 方法

Object类的 equals() 方法

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

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

  1. @Override
  2. public boolean equals(Object obj) {
  3. if (this == obj)
  4. return true;
  5. if (obj == null)
  6. return false;
  7. if (getClass() != obj.getClass())
  8. return false;
  9. Student other = (Student) obj;
  10. if (age != other.age)
  11. return false;
  12. if (name == null) {
  13. if (other.name != null)
  14. return false;
  15. } else if (!name.equals(other.name))
  16. return false;
  17. return true;
  18. }

Student类 内重写 equals方法

  1. package com.heima.object;
  2.  
  3. import com.heima.bean.Student;
  4.  
  5. public class Demo3_Equals {
  6. /*
  7. * equals 默认比较地址值
  8. * public boolean equals(Object obj) {
  9. return (this == obj);
  10. * }
  11. * object中的equals方法是比较对象的地址值,没有什么意义,我们需要重写
  12. * 因为在开发中我们通常比较的是对象中的属性值,我们认为相同属性是同一个对象
  13. */
  14. public static void main(String[] args) {
  15. Student s1 = new Student("张三", 18);
  16. Student s2 = new Student("张三", 18);
  17. boolean b = s1.equals(s2); // 重写后比较对象中的属性值
  18. System.out.println(b);
  19. System.out.println(s1 == s2);
  20. }
  21.  
  22. }

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. Codeforces Round #498 (Div. 3) E. Military Problem (DFS)

    题意:建一颗以\(1\)为根结点的树,询问\(q\)次,每次询问一个结点,问该结点的第\(k\)个子结点,如果不存在则输出\(-1\). 题解:该题数据范围较大,需要采用dfs预处理的方法,我们从结点 ...

  2. 远程连接 出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正)

    修改本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择"易受攻击". 原文:https://blog.csdn.net ...

  3. read()、readline()、readlines() -- Python

    文本文件:readfile.txt 详细描述: read()                  #一次性读取文本中全部的内容,以字符串的形式返回结果 readline()           #只读取 ...

  4. Linux程序设计——Linux基础

    1. 什么是Linux 1)Linux系统是一种自由和开放源代码的类UNIX的完整操作系统. 2)林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds,1969年~) 3)诞生于19 ...

  5. 手把手教你通过SQL注入盗取数据库信息

    目录 数据库结构 注入示例 判断共有多少字段 判断字段显示位置 显示出登录用户和数据库名 查看所有数据库 获取对应数据库的表 获取对应表的字段名称 获取用户密码 SQL注入(SQL Injection ...

  6. 一道思维题 &&递归改循环

    思路: 比如5 2 12345--> 1245 从3开始,这时候5变成了1.剩下4512,对应1234.只需要找到现在n-1,k中的数对应原来的编号的映射. 比如1-->3 是1+2 mo ...

  7. Linux下/bin和/sbin的区别

    bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat.cp.chmod df.dmesg.gzip.kill.ls.mkdir.more.mount.rm.su.tar等./u ...

  8. sql-libs(6) 双引号的报错注入

    payload:http://192.168.48.130/sqli-laaess-6/?id=1" and updatexml(1,concat(0x7e,(SELECT schema_n ...

  9. Pycharm缺少环境变量+无法获取libcudnn.so.6

    在终端输入: echo LD_LIBRARY_PATH, 并将其内容 添加至Pycharm的 run -> Edit configuration -> Environment variab ...

  10. js Promise finally All In One

    js Promise finally All In One finally let isLoading = true; fetch(myRequest).then(function(response) ...