Object、Equal/==、包装类

Object类

    在java类继承结构中,java.lang.Object类位于顶端;

    如果定义一个java类时没有使用extends关键字声明其父类,则其父类默认为java.lang.Object类

    Object类型的引用变量可以指向任何类型对象

重写toString方法    

    Object类中的重要方法,用于返回对象值的字符串表示;原则上建议重写,格式大多遵循"类的名字[域值]",例如:

    public String toString() {
return getClass().getName();
+"[name="+name
+",salary="+salary
+",gender="+gender
+"]";

}

    java语言中很多地方会默认调用对象的toString方法:

    字符串+对象,自动调用对象的toString方法

    -System.out.print(任意对象),直接调用toString方法

    如果不重写toString方法,将使用Object的toString方法,其逻辑为:--类名@散列码

     toString方法是非常有用的调试工具;

    JDK中的标准类库中,许多类都定义了toString方法,方便用户获取有关对象状态的必要信息;

    强烈建议为自定义的每一个类增加toString方法

重写Cell的toString()方法

    public class Cell{

    //重写toString方法,返回对cell信息的描述

  @Override

              public  String to String(){

         return getClass().getName()+"["+row+","+col+"]";

     }

}

String重写toString方法

    String的toString()方法就是将自身返回了

    public String toString(){

    return this;

   }

equals方法

    Object中的方法,作用在于检测一个对象是否等于另外一个对象;

    在Object类中,这个方法判断两个对象是否具有相同的引用,即是否为相同的对象;

    在实际应用中,一般需要重写该方法,通过比较对象的成员属性,使该方法更有意义,例如:对于Cell类,如果不重写equals方法,下面代码在cell1和cell2指向用一个对象才为true,可以将其重写为:当x和y坐标相等时,两个对象即相等,这样更加有意义一些.

  如何重写equals方法

    public boolean equals(Object obj){

        if(obj==null){

                return false;

        }

      if(this==obj){

       return true;

        }

    if(obj instanceof Cell){

     Cell cell=(Cell) obj;

   return cell.row==row&& cell.col==col;

   }else{

  return false;

  }

}

equals和==的区别

    ==用于比较变量的值,可以应用于任何类型,如果用于引用类型,比较的是两个引用变量中存储的值(地址信息),判断两个变量是否指向相同的对象;

    equlas是Object的方法,重写以后,可以用于比较两个对象的内容是否"相等";

    需要注意的是,Object默认的equals方法的比较规则用==

包装类

    在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象;

    所有的基本类型都有一个与之对应的类,即包装类(wrapper)

包装类概述

    包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值

    包装类是final的,不能定义他们的子类

    int ------------java.lang.Integer

    long----------java.lang.Long

    double-------java.lang.Double

     short--------java.lang.Short

     float--------java.lang.Float

     byte--------java.lang.Byte

     char--------java.lang.Character

     boolean---java.lang.Boolean

抽象类Number是Byte、Double、Float、Integer、Long、Short类的父类

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

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

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

   static int MAX_VALUE 值为:2^31 -1的常量,表示int类型能表示的最大值

   static int MIN_VALUE 值为:-2^31的常量,表示int类型能表示的最小值

Integer的静态方法parseInt用于将字符串转换为int.

    String str="123";

    int value=Integer.parseInt(str);

    System.out.println(value);  //123

    str="壹佰贰";

    //会抛出NumberFormatException 

自动装箱和拆箱操作

    从java5.0版本以后到了autoboxing功能,自动"拆箱"和"装箱”是依靠JDK5的编译器在编译器的预处理工作.

下列代码写法均为正确形式:

    Integer a=100;  //装箱

    Integer b=200;  //装箱

    Integer c=a+b  //拆箱再装箱

    double d=c      // 拆箱

装箱和拆箱是"编译器"认可的,而不是虚拟机.编译器在生成类的字节码时插入必要的方法调用

Integer a=100 ==>Integer a=Integer.valueOf(100);

int  d=c=======>int d=c.intValue();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值