Java 常见对象 01
常见对象·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的更多相关文章
- Java常见对象Object类中的个别方法
Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...
- Java 常见对象 05
常见对象·正则表达式 和 其他类 正则表达式的概述和简单使用 * A:正则表达式 * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则,有自己的特殊应用 * 作用: ...
- Java 常见对象 03
常见对象·StringBuffer类 StringBuffer类概述 * A:StringBuffer类概述 * 通过 JDk 提供的API,查看StringBuffer类的说明 * 线程安全的可变字 ...
- Java 常见对象 02
常见对象·String类 Scanner 的概述和方法介绍 * A:Scanner 的概述 * B:Scanner 的构造方法原理 * Scanner(InputStream source) * Sy ...
- Java 常见对象 04
常见对象·Arrays 类和 包装类 数组高级冒泡排序原理图解 * A:画图演示 * 需求: 数组元素:{24, 69, 80, 57, 13} 请对数组元素进行排序 * 冒泡排序: 相邻元素两两比较 ...
- Java常见对象之String
String类的概述 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.字符串是常量,一旦被赋值,就不能被改变. String ...
- Java常见对象内存分析
首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...
- day11<Java开发工具&常见对象>
Java开发工具(常见开发工具介绍) Java开发工具(Eclipse中HelloWorld案例以及汉化) Java开发工具(Eclipse的视窗和视图概述) Java开发工具(Eclipse工作空间 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
随机推荐
- CodeForces - 1100E 二分+拓扑排序
题意: 一个n个节点的有向图,节点标号从1到n,存在m条单向边.每条单向边有一个权值,代表翻转其方向所需的代价.求使图变成无环图,其中翻转的最大边权值最小的方案,以及该方案翻转的最大的边权. Inpu ...
- 一张图解决ThreadLocal
一张图解决ThreadLocal 一.前言 年底梳理知识体系时,研究了一下ThreadLocal的源码,整理了一张核心图. 想着,都走到这一步了,那就写一篇深度解读的文章吧.看过我之前文章的小伙伴都知 ...
- Python_小程序
一.开发前的准备工作 1.申请AppID:一个账号对应一个小程序,个人/个体只能申请5个小程序 2.下载开发工具 二.小程序的文件结构 三. 1.数据绑定 1.1数据的设置 Page( data:{ ...
- 一篇文章图文并茂地带你轻松学会 HTML5 storage
html5 storage api localStorage 和 sessionStorage 是 html5 新增的用来存储数据的对象,他们让我们可以以键值对的形式存储信息. 为什么要有 stora ...
- 关于HashMap遍历,为什么要用entry
Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Va ...
- HDU - 4722 Good Numbers 【找规律 or 数位dp模板】
If we sum up every digit of a number and the result can be exactly divided by 10, we say this number ...
- hdu-6237
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 【原】无脑操作:Centos 7.6 + MariaDB + Rsyslog + LogAnalyzer环境搭建
背景: 网络安全法第三章第二十一条明确规定"采取监测.记录网络运行状态.网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月". 为了满足合规性的要求,应当建设相应的日 ...
- CF 1477A. Nezzar and Board
传送门 思路: 从k = 2 * x - y ==> 2 * x = k + y ,可以看出x是k,y的中间值,则如果存在x1,x2,且x1 = x2 ± 1,则通过x1,x2可以得到所有整数, ...
- 开工大吉:TcaplusDB将持续为您提供可靠的数据服务
开工大吉 新的一年 新的开始 我们也带着新的心意 向您奔赴而来 在此,TcaplusDB祝广大客户朋友,开工大吉,2021,我们将一如既往地守护您的数据,继续做您最坚实的后盾. 作为专为游 ...