目 录
一、基本数据类型对应的包装类
1.概览
2.说明
二、包装类
1.最大值与最小值
2.构造方法
3.常用方法(Integer为例)
(1)compare(int x, int y)
(2)max(int a, int b) 和 min(int a, int b)
(3)parseInt(String s)
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
(5)valueOf(int i)、valueOf(String s)
三、String、int、Integer 间的相互转换
四、自动装箱与自动拆箱
五、整数型常量池
六、BigInteger
1.说明
2.常用方法
七、BigDecimal
1.说明
2.其他常用方法
八、数字格式化
1.说明
2.实例
一、基本数据类型对应的包装类
1.概览
基本数据类型 | 包装数据类型 |
---|---|
byte | java.lang.Byte |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
boolean | java.lang.Boolean |
char | java.lang.Character |
2.说明
- 包装类是引用数据类型;
- 基本数据类型对应的包装类中,前六项数字类型都继承了 Number 类;
- Number 类提供了 byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()方法,可以将包装类型转换为基本数据类型,该过程称为拆箱;
- Boolean 的拆箱方法是 booleanValue();
- Character 的拆箱方法是 charValue()。
二、包装类
1.最大值与最小值
public class PackageTest {public static void main(String[] args) {System.out.println(Byte.MAX_VALUE); // 127System.out.println(Byte.MIN_VALUE); // -128System.out.println(Short.MAX_VALUE); // 32767System.out.println(Short.MIN_VALUE); // -32768System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println(Integer.MIN_VALUE); // -2147483648System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808System.out.println(Float.MAX_VALUE); // 3.4028235E38System.out.println(Float.MIN_VALUE); // 1.4E-45System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308System.out.println(Double.MIN_VALUE); // 4.9E-324}
}
2.构造方法
- 通过构造方法将基本数据类型包装成引用数据类型,该过程称为装箱;
- 若数字中类型不一致,会抛出数字格式化异常;
- jdk 9 之后,被标注已过时。
3.常用方法(Integer为例)
(1)compare(int x, int y)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.compare(1, 9)); // 输出:-1System.out.println(Integer.compare(8, 2)); // 输出:1System.out.println(Integer.compare(5, 5)); // 输出:0}
}
(2)max(int a, int b) 和 min(int a, int b)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.max(1, 9)); // 输出:9System.out.println(Integer.min(1, 9)); // 输出:1}
}
(3)parseInt(String s)
将字符串数字转换为数字类型。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.parseInt("123")); // 输出:123System.out.println(Integer.parseInt("123" + 1)); // 输出:1231System.out.println(Integer.parseInt("123") + 1); // 输出:124}
}
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
分别获取数字 二进制、十六进制、八进制 的字符串表示形式。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.toBinaryString(20)); // 10100System.out.println(Integer.toHexString(20)); // 14System.out.println(Integer.toOctalString(20)); // 24}
}
(5)valueOf(int i)、valueOf(String s)
将 基本数据类型 int 或字符串 转换成 Integer ,且字符串必须是数字字符串,否则会抛出数字格式化异常。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.valueOf(20)); // 输出:20System.out.println(Integer.valueOf("123")); // 输出:123}
}
三、String、int、Integer 间的相互转换
public class PackageTest {public static void main(String[] args) {/*** String ——> int 转换*/String s1 = "123";int i1 = Integer.parseInt(s1);System.out.println("[ String ——> int 转换 ]");System.out.println("i1 = " + i1); // 123System.out.println("i1 + 1 = " + (i1 + 1)); // 124/*** int ——> String 转换*/int i2 = 123;String s2 = i2 + "";System.out.println("[ int ——> String 转换 ]");System.out.println("s2 = " + s2); // 123System.out.println("s2 + 1 = " + (s2 + 1)); // 1231String s3 = Integer.toString(i2);System.out.println("s3 = " + s3); // 123System.out.println("s3 + 1 = " + (s3 + 1)); // 1231/*** String ——> Integer 转换*/String s4 = "123";Integer i3 = Integer.valueOf(s4);System.out.println("[ String ——> Integer 转换 ]");System.out.println("i3 = " + i3); // 123System.out.println("i3 + 1 = " + (i3 + 1)); // 124/*** Integer ——> String 转换*/Integer i4 = 123;String s5 = i4.toString();System.out.println("[ Integer ——> String 转换 ]");System.out.println("s5 = " + s5); // 123System.out.println("s5 + 1 = " + (s5 + 1)); // 1231/*** int ——> Integer 转换*/int i5 = 123;Integer i6 = Integer.valueOf(i5);System.out.println("[ int ——> Integer 转换 ]");System.out.println("i6 = " + i6); // 123System.out.println("i6 + 1 = " + (i6 + 1)); // 124/*** Integer ——> int 转换*/Integer i7 = 123;int i8 = i7.intValue();System.out.println("[ Integer ——> int 转换 ]");System.out.println("i8 = " + i8); // 123System.out.println("i8 + 1 = " + (i8 + 1)); // 124}
}
四、自动装箱与自动拆箱
jdk 5 新增,是编译阶段的功能。
public class Test {public static void main(String[] args) {// 自动装箱,实际上是 Integer i1 = new Integer(10);Integer i1 = 10;// 自动拆箱,实际上是 int i2 = i1.intValue();int i2 = i1;}
}
五、整数型常量池
public class Test {public static void main(String[] args) {Integer i1 = 127;Integer i2 = 127;System.out.println(i1 == i2); // trueInteger i3 = 128;Integer i4 = 128;System.out.println(i3 == i4); // false}
}
为什么会造成这样的结果呢?
因为 [-128,127] 较为常用,为提高效率,Java 提供了整数型常量池。该常量池是一个 Integer 数组,存储了256个 Integer 引用,只要在这个范围,直接从整数型常量池中获取。
六、BigInteger
1.说明
- 为了解决整数超过 long 最大值的问题,Java提供了一种引用数据类型 java.math.BigInteger;
- 它的父类是 Number 类。
public class Test {public static void main(String[] args) {long l = 999999999999999999L; // long类型最大值System.out.println("l = " + l);BigInteger b = new BigInteger("999999999999999999999999999"); // BigInteger类型System.out.println("b = " + b);}
}
2.常用方法
public class Test {public static void main(String[] args) {BigInteger b1 = new BigInteger("2");BigInteger b2 = new BigInteger("3");BigInteger b3 = new BigInteger("-4");System.out.println("b1 + b2 = " + b1.add(b2)); // 加法System.out.println("b1 - b2 = " + b1.subtract(b2)); // 减法System.out.println("b1 * b2 = " + b1.multiply(b2)); // 乘法System.out.println("b1 / b2 = " + b1.divide(b2)); // 除法System.out.println("b1 % b2 = " + b1.remainder(b2)); // 取余System.out.println("b1 ^ 2 = " + b1.pow(2)); // 幂System.out.println("b1.compareTo(b2) = " + b1.compareTo(b2)); // 比较System.out.println("b1.max(b2) = " + b1.max(b2)); // 取大System.out.println("b1.min(b2) = " + b1.min(b2)); // 取小System.out.println("b3.abs() = " + b3.abs()); // 绝对值System.out.println("b1.sqrt() = " + b1.sqrt()); // 平方根}
}
七、BigDecimal
1.说明
- 为了解决浮点数超过 double 最大值的问题,Java提供了一种引用数据类型 java.math.BigDecimal;
- 它的父类是 Number 类;
- 常用于财务软件。
2.其他常用方法
public class Test {public static void main(String[] args) {BigDecimal b = new BigDecimal("520.1314");System.out.println(b.movePointLeft(1)); // 向左移动一位System.out.println(b.movePointRight(1)); // 向右移动一位}
}
八、数字格式化
1.说明
- java.text.DecimalFormat 类是用来数字格式化的;
- 常用格式:
- 三个数字为一组,每组之间使用逗号间隔,保留两位小数;
- 三个数字为一组,每组之间使用逗号间隔,保留四位小数,不够补0。
2.实例
public class Test {public static void main(String[] args) {DecimalFormat df1 = new DecimalFormat("###,###.##");System.out.println(df1.format(5201314.1314)); // 5,201,314.13DecimalFormat df2 = new DecimalFormat("###,###.0000");System.out.println(df2.format(5201314.13)); //5,201,314.1300}
}