【2】java之object类
一、Object 类的基本定义
Object 类是所有类的父类,最大的一个好处就是:利用 Object 类可以接收所有类的对象(向上自动转型)。如果不确定参数类型,使用 Object 类型是最好的选择。
为什么 Object 类里要定义一个无参构造方法。因为 Object 类是所有类的父类,所有对象实例化的时候,构造方法一定要默认调用父类的无参构造。
从严格意义上来讲(一般不遵守),任何一个简单 java 类都应该覆写 Object 类中的如下 3 个方法:
- public String toString() :取得对象信息;
- public boolean equals(Object obj):对象比较;
- public int hashCode() 取得对象 hash 码。
1.1 取得对象信息:toString()
class Book{}
public class TestDemo{
public static void main(String args[]){
Book book = new Book();
System.out.println(book);
System.out.println(book.toString());
String h = "Hello";
System.out.println(h);
}
}
发现直接输出对象与输出对象调用 toString() 方法的功能一样。在进行对象输出时,输出操作会自动调用对象的 toString() 方法将对象变成字符串后再输出,而默认情况下 Object 类中的 toString()为了适应于所有对象的输出,只输出了对象的编码。如果有需要,可以自己根据实际情况来覆写此方法。
范例:覆写 toString() 方法。
class Book{
private String title;
private double price;
public Book(String title,double price){
this.title = title;
this.price = price;
}
public String toString(){
return "书名:" + this.title + ",价格:" + this.price;
}
}
public class TestDemo{
public static void main(String args[]){
Book book = new Book("Java",79.9);
System.out.println(book);
System.out.println(book.toString());
}
}
直接输出对象就调用了 toString() ,等于输出对象的时候代码又节约了。
1.2 对象比较:equals(Object obj)
范例:equals(Object obj) 方法
class Book{
private String title;
private double price;
public Book(String title,double price){
this.title = title;
this.price = price;
}
public String toString(){
return "书名:" + this.title + ",价格:" + this.price;
}
public boolean equals(Object obj){
if(obj == null){
return false;
}
if(obj == this){
return true;
}
if(obj instanceof Book){
Book book = (Book) obj;
if(this.title.equals(book.title) && book.price == this.price){
return true;
}else{
return false;
}
}
}
public class TestDemo{
public static void main(String args[]){
Book book = new Book("Java",79.9);
Book book2 = new Book("Java",79.9);
String string = "hello";
System.out.println(book.equals(book2));
System.out.println(book.equals(string));
}
}
1.3 Object 类可以接收一切引用数据类型
Object 类是所有类的父类,所以 Object 类可以接收所有类的对象,而且还可以接收 数组 和 接口对象。
范例:Object 对象接收数组对象
public class TestDemo{
public static void main(String args[]){
Object obj = new int[]{1,2,3};
int[] data = (int[]) obj;
for(int i=0; i<data.length; i++){
System.out.println(data[i]);
}
}
}
范例:Object 对象接收接口对象
interface A{
public void fun();
}
class B implements A{
public void fun(){
System.out.println("B 覆写fun()");
}
}
public class TestDemo{
public static void main(String args[]){
A a = new B();
Object obj = a;
A aa = (A) obj;
aa.fun();
}
}
【2】java之object类的更多相关文章
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- Java之Object类和常用的API
Object类和常用的API 学习过程中的笔记,涉及到Objetc中的equals方法和toString方法,日期类Date,日历类Calendar,日期格式化类SimpleDateFormat以及基 ...
- Java中Object类hashCode的底层实现
Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...
- Java 之 Object 类
一.Object 概述 java.lang.Object 类是 Java 语言中的根类,即所有类的父类. 在对象实例化的时候,最终找的父类就是 Object. 如果一个类没有特别指定父类,那么默认则 ...
- Java之Object类用法总结
Object类概述: 1.Object类是所有Java类的根父类. 2.如果在类的声明中未使用extends关键字指明其父类, 则默认父类为java.lang.Object类. Object类主要结构 ...
- java.lang.Object类与equals()及toString()的使用
1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...
- java之Object类介绍
1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 p ...
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)
java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...
- JDK1.8源码(一)——java.lang.Object类
本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...
- 浅析Java的Object类
前言: 最近在回顾Java基础,在此过程中,查看源码是少不了的 这里以JDK8以基准,记录一些自己查看源码的观感 Object类,翻阅源码,看看这个类的所在位置,是在 java.lang 包下 ...
随机推荐
- vue 点击按钮添加一行dom节点
如图,最近项目需求,点击添加一行dom节点,包含下拉框和input输入框 ,下面展示一下代码 <ul class="sales-menuItem-ul"> <li ...
- vue使用echarts引入离线地图(geo.json)并切换省市(以四川为例)
https://blog.csdn.net/weixin_43374193/article/details/95594419 https://blog.csdn.net/harrisonz8/arti ...
- 洛谷P1605例题分析
迷宫 题目描述 给定一个 \(N \times M\) 方格的迷宫,迷宫里有 \(T\) 处障碍,障碍处不可通过. 在迷宫中移动有上下左右四种方式,每次只能移动一个方格.数据保证起点上没有障碍. 给定 ...
- sqlSession封装以及CRUD的实现
sqlSession封装以及CRUD的实现 封装MyBatisUtil dao 定义方法 映射文件写sql语句 daoimpl实现类 实现方法 test类测试方法 整体结构
- 记录Typescript的学习调试笔记(比 javascript更具面向对象,强类型检查,静态字段,适合现代的大团队分工与管理风格).
1.)先来一段Typescript的环境安装. 安装nodejs ,下载地址:https://nodejs.org/en/download/ //(node-v12.1 ...
- python进阶之路17 包的使用、collections、time、random模块
包 大白话: 多个py文件的集合>>>:文件夹 专业:内部含有__init__.py文件的文件夹(python2 必须要求 python3无所谓) 包的具体使用 虽然python3对 ...
- Java学习笔记:2022年1月10日
Java学习笔记:2022年1月10日 摘要:这篇笔记主要记录了学习<Java核心技术 卷一>的第四章时的一些心得,主要阐述了对象与类这一部分的内容.需要注意的是,这一章的内容需要精心 ...
- 统一返回对象封装和统一异常捕获封装springboot starter
好久没有更新文章了,高龄开发没什么技术,去了外包公司后没怎么更新文章了.今天分享下统一处理starter,相信开发web系统的时候都是会涉及到前后端的交互,而后端返回数据的时候一般都会统一封装一个返回 ...
- 今天学到的新知识--自己的电脑可以像Github Pages、码云 Pages一样发布静态资源
大佬教我的,感觉这个很神奇哦 假设下面这个路径是我的本地电脑静态资源路径 打开powershell窗口 然后按照下图的样子执行命令 复制网址就可以访问啦 然后可以通过 https://iplocati ...
- vue打包---放到服务器下(一个服务器多个项目需要配置路径),以及哈希模式和历史模式的不同配置方法
哈希模式,好用,不需要服务器配合分配路径指向,自己单机就可以打开了 接下来上代码截图 接下来开始截图 历史模式 历史模式需要后端支持 打包后自己直接点击是打不开的 截图如下