Java-Object类与包装类

一、Object类

Object类是Java中所有类的父类,其他类都默认继承了Object类,因此其他类的对象都可以使用Object进行接收。

1、Object类中的方法:

通过源码,我们可以看到 Object类中的方法如下:

在这些方法中,比较常用的方法有 clone()、equals()、getClass()、toString()。

2、获取对象信息

Object类默认提供的toString()方法只能够得到一个对象的地址,因此在实际使用中常需要在子类中覆写。

String是信息输出的重要数据类型,只要遇见了String并且执行了 “+” ,那么就默认使用 toString() 方法转化后连接。

3、对象比较

String类对象的比较使用的是equals()方法,实际上String类的equals()方法就是覆写了Object类中的equals()方法。

class Person{
    private String name ;
    private int age ;
    public Person(String name, int age) {
        this.age = age ;
        this.name = name ;
    }

@Override
重点理解equals底层如何实现的
    public boolean equals(Object obj) {
        if (obj == null) {
               return false ;
        }
        if(this == obj) {
               return true ;
        }
        // 判断是否为Person类对象
        if (!(obj instanceof Person)) {
               return false ;
        }
        Person person = (Person) obj ; // 向下转型,比较属性值
        return this.name.equals(person.name) && this.age==person.age ;
    }
}

4、接受引用数据类型

Object是所有类的父类,可以接收所有引用数据类型,包括类、数组、接口等。


二、包装类:

1、什么是包装类

数据类型分为引用数据类型和基本数据类型,Object可以接收所有的引用数据类型,那么基本数据类型如何处理呢?这里就用到了包装类。所谓包装类就是将基本数据类型封装到类中。

//定义简单包装类
class IntDemo {
    private int num ;
    public IntDemo(int num) {
        this.num = num ;
    }
    public int intValue() {
        return this.num ;
    }
}

这里的IntDemo实际上就是基本数据类型int的包装类,通过对包装类的实例化,将基本数据类型变成了一个对象,这样就可以使用Object来接收,实现参数统一。

public static void main(String[] args) {
    // 子类对象向上转型
    Object obj = new IntDemo(100) ;
    IntDemo tmp = (IntDemo) obj ; // 向下转型
    System.out.println(tmp.intValue()); // 取出基本数据类型
}

在java中,提供了8种基本数据类型的包装类,可以在开发中直接使用。

包装类又分为两种类型:

对象型(Object的直接子类):包括Boolean(boolean)、Character(char)。

数值型(Number的直接子类):包括Byte、Double、Short、Long、Integer(int)、Float。

2、装箱与拆箱

装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱。

拆箱:将包装类中包装的基本数据类型取出。利用Number类中提供的六种方法。

下面通过代码手动实现装箱与拆箱:

//定义int类型的包装类
class myInteger{
    private int num;
    public myInteger(int num){
        this.num = num;
    }
    public int getNumValue(){
        return this.num;
    }
}
public class Demo {
    public static void main(String[] args) {
        //装箱
        myInteger my = new myInteger(100);
        System.out.println(my.getNumValue());
        //拆箱
        int j = my.getNumValue();
        System.out.println(j);
    }
}

在JDK1.5之后,提供了自动拆装箱的机制,因此可以直接利用包装类的对象进行数学运算。

注意:对相同包装类对象之间值得比较,推荐使用equal()方法。

3、通过包装类实现字符串与基本数据类型转换

  • 通常各种数据的输入,都通过字符串类型接收,我们来看如何将字符串转为基本数据类型。

(1)String 转 int 类型 (Integer类)

public static int parseInt(String s) throws NumberFormatException

(2)String 转 double 类型(Double类)

public static double parseDouble(String s) throws NumberFormatException

(3)String 转 boolean(Boolean类)

public static boolean parseBoolean(String s)

注意:如果字符串在转为 int 或者 double 时含有非数字,那么就会出现NumberFormatException异常。而字符串转为boolean时不受影响。

  • 将基本数据类型转为字符串

(1)任何数据类型使用“+”连接空白字符串就变为了字符串类型。

(2)使用String类中提供的valueOf()方法,此方法不产生垃圾。

public class Test {
    public static void main(String[] args) {
        //字符串转int、double
        String str = "123456";
        int tmp1 = Integer.parseInt(str);
        double tmp2 = Double.parseDouble(str);
        System.out.println(tmp1);
        System.out.println(tmp2);
        //int、double转字符串
        String s1 = String.valueOf(tmp1);
        String s2 = String.valueOf(tmp2);
        System.out.println(s1);
        System.out.println(s2);
    }
}

三、总结:

1、Objec类作为Java中所有类的父类,可以接收所有对象,轻松实现类型参数统一。

2、字符串是重要的输入和输出常用类型,通过包装类可以实现基本数据类型与字符串之间的互相转换。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值