包装类
8个基本类型的包装类
我们知道java是面向对象的语言,其精髓之一是可以使用多态性,提高程序的灵活度。但是java中有8个基本类型:byte,short,int,long,float,double,char,boolean。它们是以值的形式存在于内存中,而不是对象。它们不是Object的子类,不能参与面向对象的开发。
包装类的作用
让基本类型参与面向对象的开发
可以获取其基本类型的取值范围
可以将字符串转换成基本类型数据
基本类型包装类
对于8个基本类型,java提供了他们相应的包装类:
基本类型 包装类
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
char java.lang.Character
boolean java.lang.Boolean
其中除了Character与Boolean的父类是Object之外,其余的都是继承自:java.lang.Number
Number及其主要方法
除了Character与Boolean之外的其他包装类都是继承自Number的,这些包装类都有一个共性,描述的都是数字。那么我们来了解一下他们的父类:java.lang.Number
Number是一个抽象类。本身不能实例化。Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法
比如:
abstract double doubleValue() 以double形式返回指定的数值
abstract int intValue() 以int形式返回指定的数值
abstract float floatValue() 以float形式返回指定的数值
剩下的抽象方法请参阅API文档:java.lang.Number
1 /** 2 * Number 是6个数字类型包装类的父类 3 * intValue 反向转换 把包装好的转换为int型 4 */ 5 6 class NumberDemo{ 7 public static void main(String[] args) { 8 Number d=new Double(123.45); 9 Number n=new Integer(345); 10 //将123.45 转换为int 11 int i = d.intValue(); 12 System.out.println(i); 13 double dou =d.doubleValue(); 14 System.out.println(dou); 15 16 i=n.intValue(); 17 System.out.println(i); 18 dou = n.doubleValue(); 19 System.out.println(dou); 20
Integer.parsetInt()方法
java.lang.Integer是int的包装类,其每一个实例用于描述一个基本类型int的值。
Integer有一个静态方法static int parseInt(String s)
该方法的作用是将一个描述整数的字符串解析为该整数,并用int形式返回。该方法可能会抛出
NumberFormatException异常:当给定的字符串里边含有非整数字符时。
转的字符串不能是小数
/** * 包装类支持将字符串转换为对应的基本类型 * */ class parseNumber{ public static void main(String[] args) { String intStr ="123"; //z /* * 将字符串转换为int值 * 包装类支持parsexxx方法 */ int num = Integer.parseInt(intStr); System.out.println(num+1); } }
Double.parseDouble()方法
自动装箱和拆箱
2.2.1. 自动装箱和拆箱的操作
如何在基本类型与包装类之间相互转换。
当我们需要将基本类型转换为包装类时,我们可以调用包装类的一个静态方法valueOf():
** * jdk 1.5之后推出新特性 自动拆装箱 * @author Administrator * */ class AutoboxingDemo{ public static void main(String[] args) { int a=1; //转换为包装类推荐使用静态方法valueof() Integer ii =Integer.valueOf(a); say(a);//自动装箱 //将包装类装换为基本类型 ii=a; //自动装箱 int b =ii; //自动拆箱 Integer i =1; a=i; }
/** * 将输入的字符串转换为数字 * @author Administrator * */ class ParseBumber{ public static final String DOUBLE_REGEX="^[0-9]+\.[0-9]+$"; public static final String INTEGER_REGEX="^[0-9]+$"; /* * 1创建Scanner用于获取用户输入的内容 * 2通过整数的正则表达式验证用户输入的字符串 匹配则转换为整数 * 3.不匹配通过小数的正则表达式转换为小数 * 4.再不匹配 输出 不是数字 */ public void checkNumber(){ Scanner scanner =new Scanner(System.in); System.out.println("请输入一个数"); //nextLine 用于获取用户输入的一行字符串 //next 空格分隔下一个 String number =scanner.nextLine(); if(number.matches(INTEGER_REGEX)){ int i =Integer.parseInt(number); System.out.println("这个整数:"+i); }else if(number.matches(DOUBLE_REGEX)){ double d= Double.parseDouble(number); System.out.println("这个小数:"+d); }else{ System.out.println("输入不是数字"); } } public static void main(String[] args) { ParseBumber Parse = new ParseBumber(); Parse.checkNumber(); } }