包装类:
1、在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象;
2、所有基本类型都有一个与之对应的类,即包装类(wrapper)。
3、包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值。
4、包装类是final的,不能定义他们的子类。
Number及其主要方法:
1、抽象类Number是Byte、Double、Float、Integer、Long和Short类的父类;
2、Number的子类必须提供将表示的数值转换为byte、double、float、int、long和short的方法:-doubleValue()以double形式返回指定的数值、-intValue()以int形式返回指定的数值。
3、Number是数值包装类的父类型,Number包含类型之间相互转换的方法。
public void testNumber() {
Number d=123.45;
Number n=123;
//输出d和n对象所属的类型
System.out.println(d.getClass().getName());//java.lang.Double
System.out.println(n.getClass().getName());//java.lang.Integer
//Number包含类型之间相互转换的方法。
int intValue=d.intValue();//输出d的整数部分
double doubleValue=d.doubleValue();//输出d的double类型的数据
System.out.println(intValue+","+doubleValue);//123,123.45
intValue=n.intValue();//输出n的int类型的数据
doubleValue=n.doubleValue();//输出n的double类型的数据
System.out.println(intValue+","+doubleValue);//123,123.0
}
Integer常用功能:
1、该类提供了多个方法,能在int类型和string类型之间相互转换,还提供了一些常量,例如:
--static intMAX_VALUE:值为 -1的常量,表示int类型能表示的最大值
--static int MIN_VALUE:值为 的常量,表示int类型能表示的最小值
public void testInteger() {
int max=Integer.MAX_VALUE;//static int MAX_VALUE:值为2^31-1的常量,表示int类型能表示的最大值
int min=Integer.MIN_VALUE;//static int MIN_VALUE:值为-2^31的常量,表示int类型能表示的最小值
System.out.println(max);
System.out.println(min);
//int不能进行越界计算,会出现溢出现象
int n=max+1;//会出现溢出
System.out.println(n);
}
2、Integer的静态方法parseInt用于将字符串转换为int。
注意字符串的格式如果不是整数形式,将无法转换,例如:”abc”就无法使用parseInt方法,会抛出NumberFormatException异常
public void testParseInt() {
String str="123";
int value=Integer.parseInt(str);
System.out.println(value);//123
str="abc";
value=Integer.parseInt(str);//抛出NumberFormatException异常,因为字符串的格式不是整数形式,将无法转换
System.out.println(str);
}
import java.util.Scanner;
public class DemoparseInt {
public static void main(String[] args) {
//从控制台输入一个假发表达式,要求验算是否正确
//如:"100+200=200",需要符合输入的这个规则,使用正则表达式:\d+\+\d+=\d+
//算法:
//1、先拆分为["100","200","300"]
//2、转换"100"->int n,"200"->int m
//3、计算n+m与"300"->int k比较
// int k=Integer.parseInt("300");Integer的parseInt方法将字符串转换为int数值
//4、如果一样就OK
Scanner in=new Scanner(System.in);
String rule="^\\d+\\+\\d+=\\d+$";//^表示以\d开头,$表示以\d结尾
String str;
do {
System.out.println("输入表达式");
str=in.nextLine();//输入字符串
}while(!str.matches(rule));//如果输入的字符串不符合rule则重新输入
String[] data=str.split("[\\+=]");//将字符串拆分存放在数组中["100","200","300"]
int m=Integer.parseInt(data[0]);//将字符串转换为int类型
int n=Integer.parseInt(data[1]);
int k=Integer.parseInt(data[2]);
if(m+n==k) {
System.out.println("OK");
}else {
System.out.println("FALSE");
}
}
}
Double常用功能:
1、在Double类的对象中包装一个基本类型double的值
2、构造方法:
--Double(doublevalue)
--Double(Strings)
方法:
--doubledoubleValue():返回此Double对象的double值
--staticdouble parseDouble(String s):返回一个新的double值,该值被初始化为用指定的String表示的值。
3、parseDouble将String类型转换为Double类型。
public void testParseDouble() {
String str="12345.00";
double value=Double.parseDouble(str);//12345.0
System.out.println(value);
}
包装类总结:
1、提供了字符串的数据向基本类型转换的算法,这些算法是人类的输入与计算机处理的二进制之间的重要桥梁!
比如:输入”123”转换为int 123就是利用Integer.parseInt()转换来的
“3.14” ->double3.14 需要用Double.parseDouble()
“true”->true 需要用Boolean.parseBoolean()
…
如果输入数据(字符串)格式有误,转换不会成功,还会抛出运行异常:NumberFormatException。
2、还提供了将基本类型转换为String的方法,这个方法是用于输出基本类型的数据;
如:inti=5340;
String s=Integer.toString(i);//结果为”5340”,将整型转换为字符型
再如:
System.out.println(i);//就用到了Integer.toString(i)
3、其余的类型跟Integer都一样。