包装类
包装类都是在lang包中,不需要导包
包装类就是把基本数据类型包装成引用数据类型
| byte | short | int | long | float | double | char | boolean | void |
|---|---|---|---|---|---|---|---|---|
| Byte | Short | Integer | Long | Float | Double | Character | Boolean | Void |
- Void类
Void类是最终类,没有子类,构造方法私有,不能创建对象
public static Void method() {
return null;
}
- 数值类型
Byte Short Integer Long Float Double
它们有共同的父类 Number
自动装箱
自动装箱是jdk5的特性,底层调用的是valueOf(类型)
对于Byte来说,在-128到127之间返回同一个对象。不会超出范围
对于Short、Integer、Long来说,在-128到127之间,返回的是同一个对象,超出这个范围,返回新的对象
对于Float、Double来说,每次都是创建新的对象
对于Character来说,0-127返回相同对象,否则返回新的对象
对于Boolean来说,要么返回TRUE、要么返回FALSE
自动拆箱
jdk5之后 可以自动拆箱:
把对应的引用数据类型转换成基本数据类型
底层调用的是xxxValue()方法
public static Void method() {
int x = integer;
// 当包装类和对应的基本类型进行运算的时候,会自动拆箱
Integer integer1 = 998;
if (integer1 <= 1000) {
System.out.println("哈哈哈");
}
Double dou = 100.0;
double d1 = dou.doubleValue();
// Integer类型的最大值和最小值
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.max(10, 20));
System.out.println(Integer.sum(10, 20));
// 方法已过期
// Integer integer2 = new Integer("123");
// System.out.println(integer2 == 123);
// 推荐使用的方法
// 把字符串转换成对应的基本数据类型
int anInt = Integer.parseInt("134");
double v = Double.parseDouble("3.14");
long l = Long.parseLong("76");
boolean aTrue = Boolean.parseBoolean("TRue");
// 字符串如何转换成char类型? 可以先转换成字符数组,再使用charAt方法获取字符
System.out.println(aTrue);
System.out.println(l);
// 注意:包装类产生的对象的哈希码值是固定不变的
// null的哈希码值规定为0
System.out.println(in.hashCode());
System.out.println(Double.hashCode(3.14));
System.out.println(Long.hashCode(134L));
System.out.println(Character.hashCode('a'));
System.out.println(Boolean.hashCode(true));
// NaN : not a number
// NaN 自己和自己都不相等
System.out.println((0.0 / 0) == (0.0 / 0));
// 可以通过Double来判断NaN
System.out.println(Double.isNaN((0.0 / 0)));
System.out.println(new Object());
// 进制转换
// 转换成二进制
System.out.println(Integer.toBinaryString(10));
// 转换成八进制
System.out.println(Integer.toOctalString(100));
// 转换成十六进制
System.out.println(Integer.toHexString(100101010));
}
数学类 Math
public static void method() {
// 圆周率
System.out.println(Math.PI);
// 自然指数
System.out.println(Math.E);
// 绝对值
System.out.println(Math.abs(-10));
// 立方根
System.out.println(Math.cbrt(27));
// 平方根
System.out.println(Math.sqrt(9));
// 向上取整
System.out.println(Math.ceil(3.74));
// 向下取整
System.out.println(Math.floor(-3.4));
// 加权函数 a的b次方
System.out.println(Math.pow(3, 4));
// 获取随机数 [100000,1000000)
System.out.println(Math.random());
// 四舍五入
System.out.println(Math.round(3.5));
}
BigDecimal
BigDecimal用于精确计算的类。
使用这个类,要求参数以字符串形式传递,底层按位计算
public static void method() {
BigDecimal bigDecimal = new BigDecimal("3.0");
BigDecimal bigDecimal1 = new BigDecimal("2.0");
// 加法
System.out.println(bigDecimal.add(bigDecimal1));
// 减法
System.out.println(bigDecimal.subtract(bigDecimal1));
// 乘法
System.out.println(bigDecimal.multiply(bigDecimal1));
// 除法 要求能够获取精确结果
System.out.println(bigDecimal.divide(bigDecimal1));
}
BigInteger
可以进行大量数字的存储和计算,最多可以存储67,108,864位
public static void method() {
BigInteger bigInteger1 = new BigInteger("987654334326756");
BigInteger bigInteger2 = new BigInteger("98765435");
System.out.println(bigInteger1.multiply(bigInteger2));
}
DecimalFormat
数字格式转换
public static void method() {
double d = 2.19 * 0.88;
System.out.println(d);
// 创建对象指定数字显示的格式
// 0代表占位符,表示一位数字,如果这一位没有数字,用0填充
DecimalFormat decimalFormat = new DecimalFormat("00.00");
System.out.println(decimalFormat.format(2.8999));
DecimalFormat decimalFormat1 = new DecimalFormat("#0.00");
// #是一个占位符,表示一位数字,这一位如果没有数字,那么就不填充内容
System.out.println(decimalFormat1.format(2.8999));
double d2 = 567546436546342L;
// 科学计数法
DecimalFormat decimalFormat2 = new DecimalFormat("0.00E0");
System.out.println(decimalFormat2.format(d2));
}