面向对象(一)

一:基本数据类型的包装类
    1.早期包装类与基本数据类型的装换
       基本数据类型->包装类实例对象:
     (1)通过相应的包装类构造器:int it=5;Interger itObj=new Interger(it);
    (2)传入相应的字符串到构造器:Float fl=new Float("4.23");
      包装类实例对象->基本数据类型:
    (1)通过函数XXXValue()得到:int it=itObj.intValue();
    (2)通过函数parseXXX(String str)得到:int it=Interger.praseInt("123");

    2.自动装箱和自动拆箱:为了避免基本类型变量和包装类变量的繁琐转化,利用这两个性能可以消除繁琐。
     (1)自动装箱:就是直接将基本类型变量直接赋值给包装类变量或者object变量。
           Interger inObj=5;      Object boolObj=true;
     (2自动拆箱:正好相反,它是直接将包装类变量直接赋值给基本类型变量,或者将Object类型变量进行强制类型装换赋值给基本类型变量。
           int it=itObj;     boolean b=(Boolean)boolObj;


二:处理对象
    1.打印对象和toString()方法:
      (1)所有对象都是Object类的子类,若是没有覆写Object类的toString()方法,则使用System.out.print(Object b)打印对象时,将打印“类名+@+hashcode”。
       (2)若想实现“自我描述”形式的打印对象,则该对象所对应的类必须覆写toString()方法。

    2.==和equals()比较运算符
        (1)==:如果两个比较的两个变量是基本数据类型时,只要两个数的数值相等(即使类型不相同),则返回true;如果两个比较的变量是引用类型时,只有他们指向同一个对象时,才算是相等。
        (2)equals():实现了当两个引用类型的变量的值相等而不是同一个对象时,仍返回为true。各个object子类可以覆写该方法,真正实现完全按照用户的意愿来定义相等的规则。例如:string自动实现了该方法,按照字符的序列比较大小。
         (3)反射机制在覆写equals()方法时的作用:覆写方法时常常利用instanceof运算符,这样是有问题的。当前对象是后面类的实例或子类的实例时都将返回true,而利用getClass()则能避免这种不完善。
          if(obj!=null&&obj.getClass()==Person.getClass()){、、、}

你可能感兴趣的:(面向对象)