类的抽象和封装
类的抽象:将类的实现和使用分离
类的封装:实现的细节被封装并且对用户隐藏
由于以上原因,类也称作抽象数据类型
类的关系
类中间的关系通常是关联、聚合、组合、继承
关联:
聚集&组合:
聚集是关联的一种特殊形式,代表了两个对象之间的归属关系。
聚集类→被聚集类 聚集对象→被聚集对象
一个对象可以被多个其他的聚集对象所拥有,如果一个对象只归属于一个聚集对象,那么它和聚集对象之间的关系就称为组合。
将基本数据类型值作为对象处理
基本数据类型值不是一个对象,但是可以使用JavaAPI中的包装类来包装成一个对象。
出于对性能的考虑,在Java中基本数据类型不作为对象使用,因为处理对象需要额外的系统开销。
但是Java中许多方法需要将对象作为参数,所以Java提供了一个方便的方法,即将基本数据类型并入对象或者包装成对象。提供了Boolean, Character, Double, Float, Byte, Short, Integer, Long等包装类。
数值包装类相互之间都非常相似,每个都包含了doubleValue(), floatValue(), intValue(), longValue(), shortValue(), byteValue()方法,这些方法将对象“转换”成基本类型值,如下所示:
new Double(12.4).intValue(); // return 12;
构造包装类的时候,既可以用基本数据类型值,也可以用数值的字符串,例如:
new Double( 5.0 );
new Double( "5.0" );
包装类没有无参构造方法。
所有包装类的实例都是不可变的,这意味着一旦创建对象后,它们的内部值就不能再改变。
每一个数值包装类都有常量 MAX_VALUE 和 MIN_VALUE,表示最大值、最小值。调用时:Integer.MAX_VALUE
数字包装类中包含compareTo方法用于比较两个值,如果该数值大于、等于或小于另外一个数值时,分别返回1,0,-1,如下所示:
new Double(12.4).compareTo(new Double(12.3)); // return 1
数值包装类有一个静态方法 valueOf(String s),创建一个新对象,例如:
Integer intObject = Integer.valueOf("12");
用parseInt方法将字符串转换成数值,例如:
Integer.parseInt("11", 2) reutrn 3; // 将2进制11转换成int
基本类型和包装类类型之间的自动转换
装箱:将基本类型值转换为包装类对象的过程
开箱:相反的转换过程
Java允许自动转化,称为 自动装箱 和 自动开箱,例如:
Integer intObject = new Integer(2);
Integer intObject = 2; // 可以利用自动装箱将上句简化为这句
再比如:
Integer[] intArray = {1, 2, 3};
System.out.println(intArray[0] + intArray[1] + intArray[2])
上一句将1,2,3自动装箱成对象 new Integer(1),下一句对象intArray[0]被自动转换成int值,然后相加