黑马程序员_笔迹九_关于Object类和包装类

----------android培训java培训期待与您交流!-----------
 

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

常用方法

Object() 构造方法

equals(Object obj) 对象比较

hashCode() 取得hash

toString() 打印对象信息

 

直接使用toString打印信息

class Demo1{    //定义Demo类,实际上就是继承了Object

};

public class Demo{

    public static void main(String args[]){

        Demod = new Demo() ;   //实例化Demo对象

        System. out.println("不加toString()输出:" +d) ;

        System. out.println("加上toString()输出:" +d.toString()) ;

    }

};

结果:

不加toString()输出:demo.Demo@6af62373

加上toString()输出:demo.Demo@6af62373

 

PS:此时打印出的信息,不适合用户查看,所以需要覆写toString方法

 

覆写toString方法输出信息

class Person{

    private String name ;    //定义name属性

    private int age ;       //定义age属性

    public Person(String name, int age){

         this.name = name ;

         this.age = age ;

    }

    public String toString(){

         return "姓名:" + this.name + ";年龄:" + this.age ;

    }

};

public class Demo{

    public static void main(String args[]){

        Personper = new Person("hello" ,30) ;    // 实例化Person

        System. out.println("对象信息:" + per) ;

    }

};

 

使用equals()方法

此方法功能就是对象的比较,实际上String也是Object的子类,所以在String中已经实现了此方法,如果现在一个类需要实现对象的比较操作,则直接在类中覆写此方法即可

PSObject类提供的equals方法默认是比较地址的,不能进行内容的比较

 

对象的比较操作

class Person{

    private String name ;    //定义name属性

    private int age ;       //定义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 instanceof Person)){   //不是Person对象

             return false ;

        }

        Personper = (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 ;

    }

};

public class Demo{

    public static void main(String args[]){

        Personper1 = new Person("hello" ,30) ;   // 实例化Person

        Personper2 = new Person("hello" ,30) ;   // 实例化Person

        System. out.println(per1.equals(per2)?"是同一个人!" : "不是同一个人!" ) ;

        System. out.println(per1.equals("hello" )?"是同一个人!" : "不是同一个人!" ) ;

        

    }

};

 

结果:

是同一个人!

不是同一个人!

 

接收任意引用类型的对象

Object类所有对象的父类,则所有的对象都可以向Object进行转换,一切的引用数据都可以使用Object进行接收

 

使用Object接收接口实例

interface A{

    public String getInfo();    

}

class B implements A{

    public String getInfo(){     //覆写方法

         return "Hello World!!!" ;

    }

};

public class Demo{

    public static void main(String args[]){

        Aa = new B() ; //向上转型,为接口实例化

        Object obj =a ;    //使用Object接收,向上转型

        Ax = (A)obj ;   //向下转型

        System. out.println(x.getInfo()) ;

    }

};

结果:Hello World!!!

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

 

 

包装类

就是将基本数据类型进行包装成对象类。包装类和基本数据类型的关系如下

基本数据类型             包装类

int                              Integer

char                            Character

short                           Short

long                            Long

float                            Float

double                         Double

boolean                       Boolean

byte                              Byte

 

JDK中可以发现,IntegerByteFloatDoubleShortLong都属于NumberCharacterBoolean都属于Object的直接子类

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

byteValue():byte形式返回指定的数值

doubleValue();double形式返回指定的数值

floatValue();float形式返回指定的数值

intValue();int形式返回指定的数值

longValue();long形式返回指定的数值

shortValue();short形式返回指定的数值

 

装箱和拆箱的概念

将一个基本数据类型,变为包装类,称为装箱。

将包装类变为基本数据类型,称为拆箱.

 

public class Demo {

    public static void main(String args[]) {

         int x = 30;        //基本数据类型

        Integeri = new Integer(x) ;    //装箱:将基本数据类型变为包装类

         int temp = i.intValue() ; //拆箱:将一个包装类变为基本数据类型

 

    }

 

}

 

 

 

包装类的应用

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

IntegerFloat类中分别提供了以下2种方法

1 Integer(字符串转int型)

public static int parseInt(Strings) 

 

2 Float (字符串转float型)

public static float parseFloat(String s)

 

代码实例

public class Demo {

    public static void main(String args[]) {

        Stringstr1 = "10" ;    //由数字组成的字符串

        Stringstr2 = "10.3" ;  //由数字组成的字符串

         int x = Integer.parseInt(str1);     //将字符串变为int

         float f = Float.parseFloat(str2);   //将字符串变为int

        System. out.println("整数乘方:" + x + " * " + x + " = " + (x * x)) ;

        System. out.println("小数乘方:" + f + " * " + f + " = " + (f * f)) ;

 

    }

 

}

结果:整数乘方:10 * 10 = 100

小数乘方:10.3 * 10.3 = 106.090004

 

小结:

对于一个设计良好的类来说,最好覆写Object类中的equalshashCodetoString方法。

2 包装类主要用于将字符串转换为基本数据类型


----------android培训java培训期待与您交流!----------
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值