13-03 Java 基本类型包装类概述,Integer类,Character
基本类型包装类概述将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。常用的操作之一:用于基本数据类型与字符串之间的转换。基本类型和包装类的对应Byte,Short,Integer,Long,Float,Double,Character,BooleanInteger类为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型package cn.itcast_01;/** 需求1:我要求大家把100这个数据的二进制,八进制,十六进制计算出来* 需求2:我要求大家判断一个数据是否是int范围内的。* 首先你的知道int的范围是多大?** 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。* byte Byte* short Short* int Integer* long Long* float Float* double Double* char Character* boolean Boolean** 用于基本数据类型与字符串之间的转换。*/public class IntegerDemo {public static void main(String[] args) {// 不麻烦的就来了// public static String toBinaryString(int i)System.out.println(Integer.toBinaryString(100));// public static String toOctalString(int i)System.out.println(Integer.toOctalString(100));// public static String toHexString(int i)System.out.println(Integer.toHexString(100));// public static final int MAX_VALUESystem.out.println(Integer.MAX_VALUE);// public static final int MIN_VALUESystem.out.println(Integer.MIN_VALUE);}}Integer的构造方法package cn.itcast_02;/** Integer的构造方法:* public Integer(int value)* public Integer(String s)* 注意:这个字符串必须是由数字字符组成*/public class IntegerDemo {public static void main(String[] args) {// 方式1int i = 100;Integer ii = new Integer(i);System.out.println("ii:" + ii);// 方式2String s = "100";// NumberFormatException// String s = "abc";//这个字符串必须是由数字字符组成Integer iii = new Integer(s);System.out.println("iii:" + iii);}}String和int的相互转换package cn.itcast_03;/** int类型和String类型的相互转换** int -- String* String.valueOf(number)** String -- int* Integer.parseInt(s)*/public class IntegerDemo {public static void main(String[] args) {// int -- Stringint number = 100;// 方式1String s1 = "" + number;System.out.println("s1:" + s1);// 方式2String s2 = String.valueOf(number);System.out.println("s2:" + s2);// 方式3// int -- Integer -- StringInteger i = new Integer(number);String s3 = i.toString();System.out.println("s3:" + s3);// 方式4// public static String toString(int i)String s4 = Integer.toString(number);System.out.println("s4:" + s4);System.out.println("-----------------");// String -- intString s = "100";// 方式1// String -- Integer -- intInteger ii = new Integer(s);// public int intValue()int x = ii.intValue();System.out.println("x:" + x);//方式2//public static int parseInt(String s)int y = Integer.parseInt(s);System.out.println("y:"+y);}} Integer的进制转换的操作package cn.itcast_04;/** 常用的基本进制转换* public static String toBinaryString(int i)* public static String toOctalString(int i)* public static String toHexString(int i)** 十进制到其他进制* public static String toString(int i,int radix)* 由这个我们也看到了进制的范围:2-36* 为什么呢?0,...9,a...z,加起来36个** 其他进制到十进制* public static int parseInt(String s,int radix)*/public class IntegerDemo {public static void main(String[] args) {// 十进制到二进制,八进制,十六进制System.out.println(Integer.toBinaryString(100));System.out.println(Integer.toOctalString(100));System.out.println(Integer.toHexString(100));System.out.println("-------------------------");// 十进制到其他进制System.out.println(Integer.toString(100, 10));System.out.println(Integer.toString(100, 2));System.out.println(Integer.toString(100, 8));System.out.println(Integer.toString(100, 16));System.out.println(Integer.toString(100, 5));System.out.println(Integer.toString(100, 7));System.out.println(Integer.toString(100, -7));System.out.println(Integer.toString(100, 70));System.out.println(Integer.toString(100, 1));System.out.println(Integer.toString(100, 17));System.out.println(Integer.toString(100, 32));System.out.println(Integer.toString(100, 37));System.out.println(Integer.toString(100, 36));System.out.println("-------------------------");//其他进制到十进制System.out.println(Integer.parseInt("100", 10));System.out.println(Integer.parseInt("100", 2));System.out.println(Integer.parseInt("100", 8));System.out.println(Integer.parseInt("100", 16));System.out.println(Integer.parseInt("100", 23));//NumberFormatException//System.out.println(Integer.parseInt("123", 2));}}JDK5的新特性--自动装箱和自动拆箱package cn.itcast_05;/** JDK5的新特性* 自动装箱:把基本类型转换为包装类类型* 自动拆箱:把包装类类型转换为基本类型** 注意一个小问题:* 在使用时,Integer x = null;代码就会出现NullPointerException。* 建议先判断是否为null,然后再使用。*/public class IntegerDemo {public static void main(String[] args) {// 定义了一个int类型的包装类类型变量i// Integer i = new Integer(100);Integer ii = 100;ii += 200;System.out.println("ii:" + ii);// 通过反编译后的代码// Integer ii = Integer.valueOf(100); //自动装箱// ii = Integer.valueOf(ii.intValue() + 200); //自动拆箱,再自动装箱// System.out.println((new StringBuilder("ii:")).append(ii).toString());Integer iii = null;// NullPointerException,如果iii为空对象,会报错,需要判断是否为空if (iii != null) {iii += 1000;System.out.println(iii);}}}-128到127之间的数据缓冲池问题package cn.itcast_06;/** 看程序写结果** 注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池里获取数据*/public class IntegerDemo {public static void main(String[] args) {Integer i1 = new Integer(127);Integer i2 = new Integer(127