29Java中的常用类----Object类、包装类

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;

	}

}

猜你喜欢

转载自blog.csdn.net/qq_44787898/article/details/102983732