面向对象(2)

1.基本数据类型的包装类

引言:Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢?

除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了。

Integer,Byte,Float,Double,Short,Long都是Number类的子类

Character和Boolean都是Object直接子类

8个类都是final修饰的(不可被继承)。

2.基本数据类型和包装类相互转换

 

把基本数据类型 → 包装类:

通过对应包装类的构造方法实现

除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象。

包装类 → 基本数据类型

包装类的实例方法xxxValue();    // xxx表示包装类对应的基本数据类型

 

Eg:

boolean bool = false;
Boolean b2 = new Boolean(bool);
Integer i = new Integer(3);
int i2 = i.intValue();
Boolean b1 = new Boolean("TRue");//true
boolean b2 = b1.booleanValue();
Float f = new Float("3.14");//3.14
Integer i2 = new Integer("123s");//NumberFormatException

备注:

自动装箱&自动拆箱

 

jdk1.5开始出现的特性:

自动装箱:可把一个基本类型变量直接赋给对应的包装类对象或则Object对象

自动拆箱:允许把 包装类对象直接赋给对应的基本数据类型

 

Eg:

Integer i = 3;//装箱
int i2 = i;//拆箱
Object flag = new Boolean(false);
if(flag instanceof Boolean){
    Boolean b = (Boolean)flag;
    boolean b2 = b;
}

我的总结:对于基本数据类型和包装类之间的装换,我们可以直接的用,相互转换,因为java5之后的自动拆箱、装箱功能!即便不知道这个,其实使用中也不影响!

3.基本类型和String之间的转换

String → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量;

基本类型 → String,String 类有静态方法valueOf(),用于将基本类型的变量转换成String类型。

String str = "17";

int i = Integer.parseInt(str);//String  --> 基本类型

String s1 = String.valueOf(i);//基本类型 --> String

4.Object

所有类的公共父类,一旦一个类没有显示地继承一个类则其直接父类一定是Object。

一切数据类型都可用Object接收

class OOXX  extends Object{}等价于class ooXX {}

 

常见方法

public boolean equals(Object obj):对象比较

public int hashCode():取得该对象的Hash码

public String toString():对象描述

 

Object类的 toString()方法:“对象的描述”

建议所有类都覆写此方法

直接打印输出对象时,会调用该对象的toString()方法。//可以不写出来

打印对象的时候,实际调用的对象实际指向的类的自我描述;

全限定类名+@+十六进制的hashCode值,等价于

全限定类名+@+IntegertoHexString(该对象.hashCode)

 

equals也是判断是否指向同一个对象

没有实际意义,有必要可以重写

public boolean equals(Object obj) {}

String 覆写了 Object的equals方法:只比较字符的序列是否相同

==用于判断两个变量是否相等

基本类型:

引用类型:必须指向同一个对象,才true

只能比较有父子或平级关系的两个对象

new String("1") == new String("1"); ?

猜你喜欢

转载自www.cnblogs.com/whu-2017/p/9227671.html