Object
- 在Java类继承结构中,java.lang.Object类位于顶端
- 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为java.lang.Object类
- Object定义了“对象”的基本行为,被子类默认继承
public class Foo{...}等价于public class Foo extends Object{...}
包装类
- Java语言的八种基本类型分别对应了八种“包装类”,每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了一些针对该数据类型的实用方法
包装类 | 对应的基本类型 |
java.lang.Integer | int |
java.lang.Long | long |
java.lang.Double | double |
java.lang.Character | char |
java.lang.Boolean | boolean |
java.lang.Byte | byte |
java.lang.Float | fioat |
java.lang.Short | short |
- 包装类是不可改变类,在构造了包装类对象后,不允许更改包装在其中的值
- 包装类是final的,不能定义它们的子类
通过代码熟悉包装类(解释在代码中出现)
package day02;
/**
* 包装类
* Java对于八种基本数据类型分别定义了对应的包装类而包装类出现
* 的原因是为了解决基本类型不能参与面向对象开发的问题
* @author
*
*/
public class IntegerDemo1 {
public static void main(String[] args) {
dosome("ABC");
dosome(new Point(1,2));
int i=1;
/**
* java的八种基本类型是以值的形式直接存在的,
* 所以他们并没有面向对象
* 的特性,自然也不用继承自Object。所以不能
* 使用多态,用Object的角度去接受基本类型
* @param obj
*/
Integer ii=new Integer(i);
dosome(ii);
}
int i=128;
Integer ii=new Integer(i);
public static void dosome(Object obj) {
}
}
/*class Integer {
private int i;
public Integer(int i) {
this.i=i;
}
public int intValue() {
return i;
}
public static Integer valueOf(int j) {
return null;
}
}
*/
package day02;
/**
* 数字类型的包装类继承自Number
* 其提供了如:intValue,doubleValue这样的
* 方法,作用是可以将当前包装类表示的数字
* 以其他数字类型返回
* @author
*
*/
public class IntegerDemo2 {
public static void main(String[] args) {
/**
* 将基本类型转换为包装类有两种方式:
* 调用构造方法
* 调用静态方法valueOf(推荐)
*/
Integer i1=Integer.valueOf(127);
Integer i2=Integer.valueOf(127);
System.out.println(i1==i2);
System.out.println(i1.equals(i2));
//还原成int类型
int i=i1.intValue();
System.out.println(i);
//还原成double类型
double p=i1.doubleValue();
}
}
package day02;
/**
* 数字类型包装类都支持两个常量
* MAX_VALUE,MIN_VALUE
* 分别保存了对应基本类型的最大值与最小值
* @author
*
*/
public class IntegerDemo3 {
public static void main(String[] args) {
//获取int最大值
int imax=Integer.MAX_VALUE;
int imin=Integer.MIN_VALUE;
System.out.println("imax: "+imax);
System.out.println("imin: "+imin);
double dmax=Integer.MAX_VALUE;
double dmin=Integer.MIN_VALUE;
}
}
package day02;
/**
* 包装类提供了一个静态方法parseXXX(String str)
* 可以将给定的字符串转换为对应的基本类型
* 前提是该字符串必须正确的描述基本类型可以保存的值
* @author
*
*/
public class IntegerDemo4 {
public static void main(String[] args) {
String str="123";
int i=Integer.parseInt(str);
System.out.println(i+1);
double d=Integer.parseInt(str);
System.out.println(d+1);
}
}
package day02;
/**
* JDk1.5之后推出了一个新特性
* 自动拆装箱
* @author
*
*/
public class IntegerDemo5 {
public static void main(String[] args) {
/**
* 自动拆装是编译器认可,而不是虚拟机认可
* 编译器在将源程序编译时自动补充代码来完成
* 基本类型与包装类之间的转换
*
* 下面代码触发了自动拆箱
* 在class文件中,下面的代码被编译器该为:
* int i=new Integer(1).intValue();
*/
int i=new Integer(1);
/**
* 下面代码触发了自动装箱:
* 在class文件中,下面代码将被编译器改为:
* Integer ii=Integer.valueOf(123);
*/
Integer ii=123;
}
}