3.创建Integer类,将int转为integet(从int类型转换为integer对象的过程,叫做装箱)
4.将integer转为int(从integer对象转换为int类型的过程,叫做拆箱)
1.自动装箱(将int变量123赋给Integer对象it5)
2.自动拆箱(将Integer对象it5赋给int变量ib)
一、包装类的定义及分类:
清华:https://github.com/PKUanonym/REKCARC-TSC-UHT
1.简单定义:
负责将变量变成对象的类称为包装类,包装类主要是为了满足“万物皆对象”的理念。
2.包装类的分类
包装类 | 对应的基本类型 |
java.lang.Byte | byte |
java.lang.Short | short |
java.lang.Integer | int |
java.lang.Long | long |
java.lang.Float | float |
java.lang.Double | double |
java.lang.Boolean | boolean |
java.lang.Character | char |
包装类 | 父类 |
java.lang.Byte | java.lang.Number |
java.lang.Short | |
java.lang.Integer | |
java.lang.Long | |
java.lang.Float | |
java.lang.Double | |
java.lang.Boolean | |
java.lang.Character |
二.Integer的概述及使用
1.Integer类的常用常量
常量类型和名称 | 功能介绍 |
public static final int MAX_VALUE | 表示int类型可以描述的最大值,即2^31-1 |
public static final int MIN_VALUE | 表示int类型可以描述的最小值,即-2^31 |
public static final int SIZE | 表示int类型采用二进制补码形式的位数 |
public static final int BYTES | 表示int类型所占的字节个数 |
public static final Class TYPE | 表示int类型的Class实例 |
测试上述常量,代码如下:(注释就是执行结果)
System.out.println("最大值是:" + Integer.MAX_VALUE); // 2^31-1
System.out.println("最小值是:" + Integer.MIN_VALUE); // -2^31
System.out.println("所表示二进制的位数是:" + Integer.SIZE); // 32
System.out.println("所占字节的个数是:" + Integer.BYTES); // 4
System.out.println("对应int类型的Class实例是:" + Integer.TYPE); // int
2.Integer的常用方法
方法声明 | 功能介绍 |
Integer(int value) | 根据参数指定的整数来构造对象(已过时,从java9开始) |
Integer(String s) | 根据参数指定的字符串来构造对象 (已过时) |
int intValue() | 获取调用对象中的整数值并返回 |
static Integer valueOf(int i) | 根据参数指定整数值得到Integer类型对象 |
boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
String toString() | 返回描述调用对象数值的字符串形式 |
static int parseInt(String s) | 将字符串类型转换为int类型并返回 |
static String toString(int i) | 获取参数指定整数的十进制字符串形式 |
static String toBinaryString(int i) | 获取参数指定整数的二进制字符串形式 |
static String toHexString(int i) | 获取参数指定整数的十六进制字符串形式 |
static String toOctalString(int i) | 获取参数指定整数的八进制字符串形式 |
3.创建Integer类,将int转为integet(从int类型转换为integer对象的过程,叫做装箱)
Integer it1 = new Integer(123);
System.out.println("it1的结果是"+it1);
注意:上述代码的执行结果为123,原因是因为打印对象或者使用字符串拼接对象时,会自动调用该对象的toString方法,而不是因为其它原因
上述的Integer构造方法已过时,可以使用valueOf代替,结果相同:
Integer it2 = Integer.valueOf(123);
System.out.println(it2);
上面的两种方法的参数也可以是字符串
Integer it3 = new Integer("456");
System.out.println(it2);
Integer it4 = Integer.valueOf("456");
System.out.println(it2);
也可以使用parseInt方法对字符串进行转换
Integer it3 = Integer.parseInt("456");
System.out.println(it2);
4.将integer转为int(从integer对象转换为int类型的过程,叫做拆箱)
调用intValue方法,可以获取it3对象中的int变量的值,将这个值赋给了it4,也算是将integer转为了int类型(Integer对象自带1个int类型的变量)
int it4 = it3.intValue();
三、自动装箱与拆箱
定义:从java5开始,有了自动装箱和自动拆箱的机制
1.自动装箱(将int变量123赋给Integer对象it5)
Integer it5 = 123;
2.自动拆箱(将Integer对象it5赋给int变量ib)
int ib = it5;
3.自动装箱池
定义:在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用 该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
注意:上面也就是说如果整数的范围在-128到127之间,那么只要装箱用的两个数字一样,那么两个Integer对象也相等
Integer it6 = 127;
Integer it7 = 127;
Integer it8 = new Integer(127);
Integer it9 = new Integer(127);
System.out.println(it6 == it7); // 比较地址 true 地址一样
System.out.println(it6.equals(it7)); // 比较内容 true
System.out.println(it8 == it9); // 比较地址 false
System.out.println(it8.equals(it9)); // 比较内容 true
四、Double类的概述及使用
1.Double类常用的常量
常量类型和名称 | 功能介绍 |
public static final int SIZE | 表示double类型的二进制位数 |
public static final int BYTES | 表示double类型的字节个数 |
public static final Class TYPE | 表示double类型的Class实例 |
2.Double类常用的方法
方法声明 | 功能介绍 |
Double(double value) | 根据参数指定的浮点数据来构造对象(已过时) |
Double(String s) | 根据参数指定的字符串来构造对象 (已过时) |
double doubleValue() | 获取调用对象中的浮点数据并返回 |
static Double valueOf(double d) | 根据参数指定浮点数据得到Double类型对象 |
boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
String toString() | 返回描述调用对象数值的字符串形式 |
static double parseDouble(String s) | 将字符串类型转换为double类型并返回 |
boolean isNaN() | 判断调用对象的数值是否为非数字 |
五、Boolean类
1.Boolean类常用的常量
常量类型和名称 | 功能介绍 |
public static final Boolean FALSE | 对应基值为false的对象 |
public static final Boolean TRUE | 对应基值为true的对象 |
public static final Class TYPE | 表示boolean类型的Class实例 |
2.Boolean类常用的方法
方法声明 | 功能介绍 |
Boolean(boolean value) | 根据参数指定的布尔数值来构造对象(已过时) |
Boolean(String s) | 根据参数指定的字符串来构造对象 (已过时) |
boolean booleanValue() | 获取调用对象中的布尔数值并返回 |
static Boolean valueOf(boolean b) | 根据参数指定布尔数值得到Boolean类型对象 |
boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
String toString() | 返回描述调用对象数值的字符串形式 |
static boolean parseBoolean(String s) | 将字符串类型转换为boolean类型并返回,这个方法的特点:参数只要不为true和false就为false,比如将数字作为参数 |
六、Character类
1.Character类常用的变量
常量类型和名称 | 功能介绍 |
public static final int SIZE | 表示char类型的二进制位数 |
public static final int BYTES | 表示char类型的字节个数 |
public static final Class TYPE | 表示char类型的Class实例 |
2.Character类常用的方法
方法声明 | 功能介绍 |
Character(char value) | 根据参数指定的字符数据来构造对象(已过时) |
char charValue() | 获取调用对象中的字符数据并返回 |
static Character valueOf(char c) | 根据参数指定字符数据得到Character类型对象 |
boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
String toString() | 返回描述调用对象数值的字符串形式 |
static boolean isUpperCase(char ch) | 判断参数指定字符是否为大写字符 |
static boolean isLowerCase(char ch) | 判断参数指定字符是否为小写字符 |
static boolean isDigit(char ch) | 判断参数指定字符是否为数字字符 |
static char toUpperCase(char ch) | 将参数指定的字符转换为大写字符 |
static char toLowerCase(char ch) | 将参数指定的字符转换为小写字符 |
七、Math类
方法声明 | 功能介绍 |
static int max(int a, int b) | 返回两个参数中的最大值 |
static int min(int a, int b) | 返回两个参数中的最小值 |
static double pow(double a, double b) | 返回第一个参数的幂 |
static int abs(int a) | 返回参数指定数值的绝对值 |
static long round(double a) | 返回参数四舍五入的结果 |
static double sqrt(double a) | 返回参数的平方根 |
static double random() | 返回0.0到1.0的随机数 |
random方法还是推荐使用Random类,更加便捷
Math类测试
System.out.println("获取两个整数中最大值的结果是:" + Math.max(10, 20)); // 20
System.out.println("获取两个整数中最小值的结果是:" + Math.min(10, 20)); // 10
System.out.println("获取次方的结果是:" + Math.pow(2, 3)); // 8.0 体现double类型
System.out.println("获取绝对值的结果是:" + Math.abs(-5)); // 5
System.out.println("进行四舍五入的结果是:" + Math.round(3.14)); // 3
System.out.println("该整数的平方根是:" + Math.sqrt(16)); // 4.0
System.out.println("生成的随机数是:" + Math.random()); // 随机数
八、BigDecimal类的使用
定义:由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助 java.math.BigDecimal类型加以描述。
方法声明 | 功能介绍 |
BigDecimal(String val) | 根据参数指定的字符串来构造对象 |
BigDecimal add(BigDecimal augend) | 用于实现加法运算(调用这个方法的对象加上方法里的参数) |
BigDecimal subtract(BigDecimal subtrahend) | 用于实现减法运算(调用这个方法的对象减去方法里的参数) |
BigDecimal multiply(BigDecimal multiplicand) | 用于实现乘法运算(调用这个方法的对象乘上方法里的参数) |
BigDecimal divide(BigDecimal divisor) | 用于实现除法运算(调用这个方法的对象除以方法里的参数) |
// 1.构造BigDecimal类型的两个对象
BigDecimal bd1 = new BigDecimal("5.2");
BigDecimal bd2 = new BigDecimal("1.3");
// 2.使用构造完毕的对象实现加减乘除运算
System.out.println("实现加法运算的结果是:" + bd1.add(bd2)); // 6.5
System.out.println("实现减法运算的结果是:" + bd1.subtract(bd2)); // 3.9
System.out.println("实现乘法运算的结果是:" + bd1.multiply(bd2)); // 6.76
System.out.println("实现除法运算的结果是:" + bd1.divide(bd2)); // 4
注意
除法运算有时会因为不够精确,而方法无法进行运算,这时可以采用四舍五入。当然,这个方法已经过时,使用RoundingMode类进行代替。
BigDecimal bd5 = new BigDecimal("2");
BigDecimal bd6 = new BigDecimal("0.3");
System.out.println("除法运算的结果是:" + bd5.divide(bd6, RoundingMode.HALF_UP)); // 7
九、BigInteger
定义:若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述。
BigInteger的创建还有方法的使用都和BigDecimal一样,不一样的地方就是多了两个操作余数的方法
BigInteger remainder(BigInteger val) | 用于实现取余运算 |
BigInteger[] divideAndRemainder(BigInteger val) | 用于实现取商和余数的运算 |