菜鸡的Java笔记 Object 类
Object 类
Object类 的主要作用
Object 类的常用方法
内容
虽然有了对象的向上转型,可以解决了参数的统一问题,但是面对JAVA 开发之中如此众多的开发类
所以现在就面临这样一个问题:参数类型怎么选择才能够保存所以的类对象呢?
为此java里面考虑到了此种情况有一个Object类
此类定义:public class Object
可以发现在整个对的java里面只有Object 类的定义的时候没有定义父类,而其他的所有类都是Object类的子类
也就是说在整个java之中,除了Object类之外,一切都存在有继承关系
理论上定义一个类的时候如果没有继承任何的父类,那么其将默认继承Object类
这样的直接好处就是,所以类的对象都可以使用Object来接收
范例:利用Object接收对象
class Person{ }
public class objectclass{
public static void main(String args[]){
Object obj = new Person();// 向上转型
}
}
利用Object可以实现最终的参数类型的统一
清楚了 Object 类的作用之后,下面要完善一些操作:
在简单java类的时候需要提供有一个 getInfo() 的方法以返回对象信息
在进行简单java类对象比较的时候准备有一个 compare() 方法进行比较
那么从现在开始以上的这两个方法需要换名,在 Object 类里面定义有一下的两个匹配方法
取得对象信息: public String toString();
对象比较: public boolean equals(Object obj);
取得对象信息
如果说现在直接输出一个对象,默认输出的是一个对象的地址编码
范例:观察默认的 toString
class Person{ }
public class objectclass{
public static void main(String args[]){
Person p = new Person();
System.out.println(p);
System.out.println(p.toString);
}
}
通过此代码可以发现,在默认情况下如果要输出一个对象都会执行 toString()方法,不管是否显式调用此方法
于是 Object 类对于此方法就有了一个自己的默认实现,虽然不知道每个对象输出时都需要那些,但是至少知道每个对象存在都会有一个地址编码
所以默认的输出内容就是对象的编码信息
如果用户现在不希望输出编码,而希望输出具体的内容,则可以进行方法的覆写
范例:覆写 toString() 方法
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:"+this.name+";年龄:"+this.age;
}
} public class objectclass{
public static void main(String args[]){ // 为了方便模拟化调用
Person p = new Person("枫",20);
System.out.println(p); }
}
对象比较:equals()
对象比较在之前曾经使用过compare()方法进行表示,而且最为重要的是在之前实现对象比较时比较的流程:地址是否为空,属性是否相同
范例:实现对象比较
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this == obj){// 地址相同
return true;
}
if(obj == null){ // 没得比
return false;
}
if(!(obj instanceof Person)){
return false;// 两个对象没关系
}
Person per= (Person)obj;
if(this.name.equals(per,name)&&this.age == per.age){
return true;
}
return false;
}
public String toString(){
return "姓名:"+this.name+";年龄:"+this.age;
}
} public class objectclass{
public static void main(String args[]){ // 为了方便模拟化调用
Person p1 = new Person("枫",20);
Person p2 = new Person("枫",20);
System.out.println(p2); // 有BUG 如果传进来的是字符串就会出错,所以以后有判断就..... }
}
以后开始,所编写对象比较操作,都以 Object 类的 equals()方法为主
Object 类可以接收一切引用类型
java的引用类型包含:数组,类,接口。现在已经证明了所有的类对象都可以使用 Object 进行接收
可是数组和接口,他们也可以被 Object接收
范例:利用 Object接收数组对象
public class objectclass{
public static void main(String args[]){
Object obj = new int[]{1,2,3};//利用Object接收整型数组,向上转型
if(obj instanceof int[]){ // 对象是否是int数组
int data[] = (int[])obj;//向下转型
for(int x = 0;x<data.length;x++){
System.out.println(data[x]);
}
}
}
}
除了可以接收数组之外,接口也可以接收
范例:辅助概念
interface A{// 定义了一个接口
public void ptintA();
} interface B{
public void ptintB();
}
class X implements A,B{
public void ptintA(){
System.out.println("AAAAAAAAAAAAAAA");
}
public void ptintB(){
System.out.println("BBBBBBBBBBBBBBBB");
}
}
public class Interface{
public static void main(String args[]){
A a = new X();//向上转型
B b = (B)a;// 虽然A与B没有关系,但是X是B的子类
b.ptintB();
}
}
按照以上的思路解决Object 接收接口对象的问题
interface A{// 定义了一个接口
public void ptintA();
}
class X equals Object implements A{
public void ptintA(){
System.out.println("AAAAAAAAAAAAAAA");
}
}
public class Interface{
public static void main(String args[]){
A a = new X();//向上转型
Object obj = a;// 向上转型
A temp = (A)obj; // 向下转型
temp.ptintA();
}
}
Object 所有引用类型都可以接收,对于 数据的统一性操作上更加方便了
总结
1.Object类是所有类的父类,可以接收所以引用数据类型
2.Object类提供的 toString()与 equals()方法可以应用在简单java类中
菜鸡的Java笔记 Object 类的更多相关文章
- 菜鸡的Java笔记 数字操作类
数字操作类 Math 类的使用 Random 类的使用 BigInteger 和 BigDecimal 类的使用 Math 是一 ...
- 菜鸡的Java笔记 日期操作类
日期操作类 Date 类与 long 数据类型的转换 SimpleDateFormat 类的使用 Calendar 类的使用 如 ...
- 菜鸡的Java笔记 国际化程序实现原理
国际化程序实现原理 Lnternationalization 1. Locale 类的使用 2.国家化程序的实现,资源读取 所谓的国际化的程序 ...
- 菜鸡的Java笔记 - java 反射机制
反射机制 1.观察 Class 类的使用 2.利用反射改善工程设计模式 3.反射操作类结构 content (内容) 1. ...
- 菜鸡的Java笔记 java基础类库 BaseClassLibrary
java基础类库 BaseClassLibrary StringBuffer 类的特点 StringBuffer,StringBuilder,String 类之间的关系 ...
- 菜鸡的Java笔记 第三十七 - java 线程与进程
线程与进程 线程与进程的区别 最早的的时候DOS 系统有一个特点:只要电脑有病毒,那么电脑就死机了,是因为传统的DOS 系统属于单进程的操作系统 ...
- 菜鸡的Java笔记 第三十三 - java 泛型
泛型 GenericParadigm 1.泛型的产生动机 2.泛型的使用以及通配符 3.泛型方法的使用 JDK1.5 后的三大主 ...
- 菜鸡的Java笔记 第三十 - java 异常的捕获及处理
异常的捕获及处理 1.异常的产生分析以及所带来的影响 2.异常的处理的基本格式 3.异常的处理流程 4.异常的处理模式 5.自定义 ...
- 菜鸡的Java笔记 第二十五 wrapperClass 包装类
wrapperClass 包装类 1.包装类的特点 2.装箱与拆箱操作 3.数据转型处理 内容 Object 类可以接收 ...
随机推荐
- WebMagic 爬虫技术
WebMagic WebMagic 介绍 WebMagic基础架构 Webmagic 的结构分为 Downloader.PageProcessor.Scheduler.Pipeline四大组件,并由 ...
- mysql从零开始之MySQL 教程
MySQL 教程 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数 ...
- kvm安装window系统及使用NFS动态迁移
验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...
- Go语言核心36讲(Go语言基础知识五)--学习笔记
05 | 程序实体的那些事儿(中) 在前文中,我解释过代码块的含义.Go 语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码 ...
- 试题 历届试题 翻硬币 java题解
问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...
- Java生成6位数验证码
public static String getCode() { return String.valueOf((int) ((Math.random() * 9 + 1) * 100000));} 生 ...
- CAD网页Web端显示开发为什么要以WebGIS的思路来开发?
背景 在之前的博文CAD图DWG解析WebGIS可视化技术分析总结中讲解了如何把CAD的DWG格式的图纸Web可视化的方案.博文发布后,受到不少同行们的关注,也有不少咨询一些专业问题,其中大家可能疑惑 ...
- 「软件测试实战教程系列(三)」弃繁就简,接口测试神器Postman|收藏版
软件测试实战教程系列(三)弃繁就简,接口测试神器Postman|收藏版 Postman主要帮我们干了三件事: 1.把相关集合放到一个集合当中方便管理. 2.对指定接口发送请求. 3.断言 下面我们使用 ...
- javascript-jquery-文档处理
一.移动元素 1.append():向每个匹配元素的内部追加内容.例如:$("选择器1").qppend("选择器2"):将会匹配选择器2的元素,移动到匹配选择 ...
- 【Java虚拟机1】Java字节码文件格式入门
第一次学习看字节码文件,这个对工作没什么用,但是会提升内功. 首先介绍两个IDEA插件以及使用: BinEd:以16进制格式查看class文件 使用方法:右键class文件,点击Open as bin ...