博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object类
阅读量:6600 次
发布时间:2019-06-24

本文共 4052 字,大约阅读时间需要 13 分钟。

基本作用

在java中所有的类都有一个公共的父类,一个类只要没有明显地继承一个类,则肯定是Object类的子类。

class Person extends Object{    }class Person{    }复制代码

一个设计良好的类最好覆盖Object类中的equals()、hashCode()、toString()3个方法。

Object类提供的equals()方法默认是比较地址的。Object类中的equals()方法实际上也是可以使用的,但是其默认使用的是按地址进行比较,并不能对内容进行比较。复制代码
package com.dzj.object;public class Person {	private String name;	private int age;	public Person(String name, int age) {		this.name = name;		this.age = age;	}    // 覆写Object类中的equals()方法	public boolean equals(Object obj) {		if (this == obj) {// 如果两个对象的地址相等,则肯定是同一个对象			return true;		}		// 判断传进来的对象是否是Person的例子		if (!(obj instanceof Person)) {			return false;		}		// 将传进来的对象向下转型		Person per = (Person) obj;		if (per.name.equals(this.name) && per.age == this.age) {// 逐个属性比较,看是否相等			return true;		} else {			return false;		}	}	public String toString() {		return "姓名: " + this.name + "; 年龄:" + this.age;	}}复制代码

在Person类中覆写了equals()方法,首先判断传递进来的对象与当前对象的地址是否相等,如果相等,则肯定是同一个对象,因为在equals()方法处传递的参数是Object类型,所以任何对象都可以接收,这样在对象进行向下转型前就必须进行判断,判断传进来的对象是否是Person的示例,如果不是,则直接返回false;如果是,则将各个属性以此进行判断。

在编写测试方法时,为了测试程序的合理性,传入一个字符串类型的对象,从结果可以清楚地看出,因为字符串不是Person类型的对象,所以直接返回了false。

感谢博主分享

接收任意引用类型的对象

既然Object类是所有对象的父类,则所有的对象都可以向Object进行转换,在这其中也包括了数组和接口类型,即一切的引用数据类型都可以使用Object进行接收。

使用Object接收接口实例

package com.dzj.object;public interface A {   public String getInfo();}复制代码
package com.dzj.object;public class B implements A{	@Override	public String getInfo() {		return "Hello World";	}}复制代码
public class ObjectDemo {	public static void main(String[] args) {       A a = new B();//为接口实例化       Object obj = a;//对象向上转型       A x = (A) obj;//对象向下转型       System.out.println(x.getInfo());	}}//Hello World复制代码

通过以上代码可以发现,虽然接口不能继承一个类,但是依然是Object类的子类,因为接口本身是引用数据类型,所以可以进行向上转型操作。

同理,也可以使用Object接收一个数组,因为数组本身也属于引用数据类型

使用Object接收数组

package com.dzj.object;public class ObjectDemo2 {   public static void main(String[] args) {	  int temp[] = {1,3,5,7,9};	  //使用Object接收数组。	  Object obj = temp;//传递数组引用	  print(obj);}   //接收一个对象   public static void print(Object o){	   if (o instanceof int[]){//判断对象的类型		   int x[]= (int[])o;//向下转型		   for(int i=0;i

以上程序使用Object接收一个整型数组,因为数组本身属于引用数据类型,所以可以使用Object接收数组内容,在使用print()方法输出时先通过instanceof判断类型是否是一个整型数据,然后进行输出操作。

包装类

包装类的介绍

在java的设计中,提倡一切皆对象。从数据类型的划分中可以知道java中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够成为对象呢?此时为了解决此问题就需要将8种基本类型包装成一个类的形式,那么这也就是包装类的作用。

Integer、Byte、Float、Double、Short、Long都属于Number类的子类,Number类本身提供了一系列的返回以上6种基本数据类型的操作。

Character属于Object的直接子类。

Boolean属于Object的直接子类。

Number类是一个抽象类,主要将数字包装类中的内容变为基本数据类型,

public byte byteValue();public abstract double doubleValue();public abstract float floatValue();public abstract int intValue();public abstract long longValue();public abstract short shortValue();复制代码

装箱和拆箱

概念

将一个基本数据类型变为包装类==装箱操作;相反即为拆箱。

装箱和拆箱操作:

package com.dzj.object;public class WrapperDemo {   public static void main(String[] args) {	  int x = 30;//声明一个基本数据类型	  Integer i = new Integer(x);//装箱:将基本数据类型变为包装类	  int intValue = i.intValue();//将一个包装类变为基本数据类型	  //浮点数装箱及拆箱	  float f = 30.3f;	  Float a = new Float(f);	  float floatValue = a.floatValue();}}复制代码

以上手工装箱和拆箱操作,这是jdk1.5之前的做法,在jdk1.5之后提供了自动的装箱及拆箱操作。

Integer b = 30;//自动装箱成Integer	  Float c = 30.3f;//自动装箱成Float	  int d = b;//自动拆箱为int	  float y = c;//自动拆箱为float复制代码

包装类应用

包装类在实际中用得最多的是字符串变为基本数据类型的操作。

Integer类(字符串转int型)

public static int parseInt(String s) throws NumberFormatException复制代码

Float类(字符串转float型)

public static float parseFloat(String s) throws NumberFormatException复制代码

使用以上方法,一定要注意字符串必须由数字组成。

字符串==基本数据类型

String str1 = "30";//由数字组成的字符串	  String str2 = "30.3";//由数字组成的字符串	  int x1 = Integer.parseInt(str1);//将字符串变为int类型	  float f1 = Float.parseFloat(str2);//将字符串变为float类型复制代码

字符串==boolean类

public static boolean parseBoolean(String s) {        return ((s != null) && s.equalsIgnoreCase("true"));    }复制代码
Object[]o =(Object[])r;        String diseaseName=String.valueOf(o[1]);        String symptom=String.valueOf(o[2]);        boolean miss= Boolean.parseBoolean(String.valueOf(o[3]));复制代码
public static String valueOf(Object obj) {        return (obj == null) ? "null" : obj.toString();    }复制代码

转载地址:http://qcqio.baihongyu.com/

你可能感兴趣的文章
《Cadence 16.6电路设计与仿真从入门到精通》——导读
查看>>
Confluence 6 如何让我的小组成员知道那些内容是重要的
查看>>
找到一个适合的分布式文件系统之各种分布式文件系统优缺点对比
查看>>
httpd基本配置
查看>>
索引失效的几个原因
查看>>
关于多线程中使用while做循环而不使用if的解释
查看>>
欢迎你,企业基础架构CCIE,RS CCIEv5.0的升级版新时代迎合自动化运维的网工顶级认证...
查看>>
js typoeof用法
查看>>
五险一金,你清楚吗?
查看>>
Ip核_fifo
查看>>
基础 JavaScript 实例
查看>>
自定义pageControl
查看>>
repquota命令--Linux命令应用大词典729个命令解读
查看>>
我的友情链接
查看>>
设置vs解决方案跟随右边cpp
查看>>
Linux下Web服务器应用之源码构建LAMP环境
查看>>
Linux Administration
查看>>
如何使版面富有节奏感
查看>>
rabbitmq 管理及常用命令
查看>>
iphone导航控制器的开发与使用
查看>>