Java面向对象(六)

java 文章 2022-07-15 14:08 0 全屏看文

Java面向对象(六)

十九、包装类

19.1 八种基本类型包装类

java 提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征。

19.2 基本类型、包装类与 String 类间的转换。

19.3 基本数据类型转换为包装类(装箱)

public void test1(){	public static void main(String[] args){        			int num1 = 10;//		System.out.println(num1.toString());		报错		Integer in1 = new Integer(num1);			//通过构造器装箱		System.out.println(in1.toString());				Integer in2 = new Integer("123");			//通过字符串参数装箱		System.out.println(in2.toString());    				//报异常//		Integer in3 = new Integer("123abc");//		System.out.println(in3.toString());				Float f1 = new Float(12.3f);				//通过构造器装箱		Float f2 = new Float("12.3");				//通过字符串参数装箱		System.out.println(f1);		System.out.println(f2);				Boolean b1 = new Boolean(true);		Boolean b2 = new Boolean("TrUe");		System.out.println(b2);						//true/*		b2 返回 true 原因:   		public Boolean(String s) {        	this(parseBoolean(s));    	}    			public static boolean parseBoolean(String s) {        	return ((s != null) && s.equalsIgnoreCase("true"));    	}    			equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。		如果给定对象与字符串相等,则返回 true,否则返回 false。*/		Boolean b3 = new Boolean("true123");		System.out.println(b3);						//false					Order order = new Order();		System.out.println(order.isMale);			//false(基本数据类型默认值)		System.out.println(order.isFemale);			/ull(引用数据类型默认值)    }}class Order{	boolean isMale;	Boolean isFemale;}

19.4 包装类转换为基本数据类型(拆箱)

public void test2(){    public static void main(String[] args){		        Integer in1 = new Integer(12);				int i1 = in1.intValue();			//调用类方法xxxValue()		System.out.println(i1 + 1);			// 13						Float f1 = new Float(12.3);		float f2 = f1.floatValue();			//调用类方法xxxValue()		System.out.println(f2 + 1);			// 13.3    }}

19.5 自动装箱拆箱

//	JDK 5.0 新特性:自动装箱 与自动拆箱public void test3(){		int num1 = 10;		Integer in1 = num1;	//自动装箱				boolean b1 = true;		Boolean b2 = b1;	//自动装箱				System.out.println(in1.toString());    		int num3 = in1;		//自动拆箱		}

19.6 基本数据类型、包装类转换为String类型

// String类型:调用String重载的valueOf(Xxx xxx)public void test4(){	public static void main(String[] args){			int num1 = 10;		//方式1:连接运算		String str1 = num1 + "";        		//方式2:调用String的valueOf(Xxx xxx)		float f1 = 12.3f;		String str2 = String.valueOf(f1);					Double d1 = new Double(12.4);		String str3 = String.valueOf(d1);		System.out.println(str2);			//"12.3"		System.out.println(str3);			//"12.4"    }	}

19.7 String类型转换为基本数据类型、包装类

// 调用包装类的parseXxx(String s)public void test5(){	public static void main(String[] args){        		String str1 = "123";		//错误的情况://		int num1 = (int)str1;//		Integer in1 = (Integer)str1;				int num2 = Integer.parseInt(str1);        //当字符串中不是纯数字时,可能会报NumberFormatException		System.out.println(num2 + 1);				String str2 = "true1";		boolean b1 = Boolean.parseBoolean(str2);		System.out.println(b1);		//false    }}

19.8 特殊例子

public void test6(){	public static void main(String[] args){        		Object o1 = true ? new Integer(1) : new Double(2.0);		System.out.println(o1);        //	输出 1.0,三元运算符要求两边表达式数据类型一致,左边 Integer 类型自动类型转换为 Double      }}
public void method1() {    public static void main(String[] args){		Integer i = new Integer(1);		Integer j = new Integer(1);		System.out.println(i == j);		//false		Integer m = 1;		Integer n = 1;		System.out.println(m == n);		//true		Integer x = 128;				//相当于new了一个Integer对象		Integer y = 128;				//相当于new了一个Integer对象		System.out.println(x == y);		//false    }}/*	Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在-128~127范围内时,可以直接使用数组中的元素,不用再去new了。	目的:提高效率	详细可以看 Integer 源码*/
-EOF-