2.基本数据类型数据的包装类
局部变量中基本数据类型直接分配在栈中,而对象分配在堆中
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法来操作该数据
包装类主要功能:用于基本数据类型与字符串之间的转换
2.1 Integer类
2.1.1构造方法
Integer 类在对象中包装了一个基本类型 int 的值。
此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。
2.1.2包装类和基本数据类型和字符串的转化
Interger i1=5;//自动装箱
Interger i2=new Interger(1);
Interger i3=Interger.valueOf(3);
int i4 = i1;//自动拆箱
int i5 = i2.intValue();
String s1 = 5+"";自动装箱
String s2 = String.valueOf(3);
String转换成int值的几种方式:
1.int i1 = Integer.parseInt("12");
2.int i2 = new Integer("12").intValue();
推荐第一种方式,这也是包装类的最常用的场景
字符串转换为其它基本数据类型
byte b = Byte.parseByte("15");
float f = Float.parseFloat("1.5");
double d = Double.parseDouble("3.14");
.toString方法
Integer i8 = new Integer("3");
2.1.3版本说明
2.1.4int值转换成String
int值转换成String的4种方式:
- String s1 = "" + 10;
- String s2 = String.valueOf(10);
- String s3 = new Integer(10).toString();
- String s4 = Integer.toString(10);
推荐使用第一,二种方式
2.1.5 debug自动装箱
查看一下拥有调用这个方法所在这个类:
2.1.6练习题
/* * 不使用构造方法去创建Integer对象(自动装箱) * 当值在-128 到 +127之间时,实际返回的是缓冲区中的对象的引用. * * 反之调用的是valueOf方法-->new Integer(int value) * */ public class IntegerDemo5 { public static void main(String[] args) { Integer i1 = new Integer(10); Integer i2 = new Integer(10); System.out.println(i1 == i2);//比较的是内存地址 false Integer i3 = 200; Integer i4 = 200; System.out.println(i3 == i4);//false Integer i5 = 100; Integer i6 = 100; System.out.println(i5 == i6);//true } }
2.2BigInteger类
针对超出Integer表数范围的大数场景,Java提供了BigInteger类,用于大整型数的计算(加减乘除余)
BigInteger add(BigInteger val)
返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val)
返回其值为 (this - val) 的 BigInteger。
BigInteger multiply(BigInteger val)
返回其值为 (this * val) 的 BigInteger。
BigInteger divide(BigInteger val)
返回其值为 (this / val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val)
返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
2.3BigDecimal类
针对精确计算的场景,Java提供了BigDecimal类,用于浮点数的精确计算
构造方法:
BigDecimal(double value)
直接使用double参数的构造方法有一定的不预支性
BigDecimal(String value)
必须把他转成String类型才会准确
2.4Character类
Character 类在对象中包装一个基本类型 char 的值。
构造方法(只有一个):
Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值。
此外,该类提供了几种方法,
- 以确定字符的类别(小写字母,数字,等等),
- 并将字符从大写转换成小写,反之亦然。
都是静态方法
boolean isUpperCase(char ch)
boolean isLowerCase(char ch)
boolean isDigit(char ch)
char toUpperCase(char ch)
char toLowerCase(char ch)