Java 数字

前言

1、封装类

  • 所有的基本类型,都有对应的类类型。比如 int 对应的类是 Integer,这种类就叫做封装类。

2、Number 数字类

  • 数字封装类ByteShortIntegerLongFloatDouble,这些类都是抽象类 Number 的子类。

3、基本类型与封装类转换

  • 基本类型 转 封装类:不需要调用构造方法,通过 = 符号自动把 基本类型 转换为 类类型,叫做 装箱。

    1
    2
    3
    int i = 5;

    Integer it = new Integer(i);
    1
    2
    3
    int i = 5;

    Integer it = i; // 装箱
  • 封装类 转 基本类型:不需要调用 IntegerintValue 方法,通过 = 就自动转换成 int 类型,叫做 拆箱。

    1
    2
    3
    Integer it = new Integer(5);

    int i = it.intValue();
    1
    2
    3
    Integer it = new Integer(5);

    int i = it; // 拆箱

4、最大值,最小值

  • int 的最大值可以通过其对应的封装类 Integer.MAX_VALUE 获取。

    1
    2
    3
    4
    5
    // int 的最大值
    System.out.println(Integer.MAX_VALUE);

    // int 的最小值
    System.out.println(Integer.MIN_VALUE);

5、数字与字符串转换

  • 数字 转 字符串

    1
    2
    3
    4
    5
    6
    7
    8
    int i = 5;

    // 方法 1
    String str = String.valueOf(i);

    // 方法 2
    Integer it = i;
    String str2 = it.toString();
  • 字符串 转 数字

    1
    2
    3
    String str = "999";

    int i = Integer.parseInt(str);

6、Math 数学方法

  • java.lang.Math 提供了一些常用的数学运算方法,并且都是以静态方法的形式存在。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    float f1 = 5.4f; float f2 = 5.5f;

    // 四舍五入
    System.out.println(Math.round(f1));

    // 随机数
    System.out.println(Math.random()); // 0-1 之间的 随机浮点数(取不到 1)
    System.out.println((int)(Math.random() * 10)); // 0-10 之间的 随机整数(取不到 10)

    // 开方
    System.out.println(Math.sqrt(9));

    // 次方
    System.out.println(Math.pow(2, 4)); // 2 的 4 次方

    // π
    System.out.println(Math.PI);

    // 自然常数
    System.out.println(Math.E);

7、格式化输出

格式 说明
%s 表示字符串
%d 表示数字
%n 表示换行,可以做到与平台无关的换行
%8d 总长度是 8,默认右对齐
%-8d 总长度是 8,左对齐
%08d 总长度是 8,不够补 0
%,d 千位分隔符
%.2f 小数点位数
Locale.US, "%,.2f %n" 不同国家的千位分隔符
  • 控制台输出函数
关键字 说明
println 会自动换行
printf 不会自动换行
format 不会自动换行,和 format 能够达到一模一样的效果
  • println

    1
    2
    3
    String name ="盖伦"; int kill = 8; String title="超神";

    System.out.println(name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号"); // 直接使用 + 进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差
  • printf

    1
    2
    System.out.printf(name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号");  // 直接使用 + 进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差
    System.out.printf("%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n", name, kill, title); // 使用格式化输出,%s 表示字符串,%d 表示数字,%n 表示换行
  • format

    1
    2
    System.out.format(name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号");
    System.out.format("%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n", name, kill, title);
  • 其他常用的格式化方式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    import java.util.Locale;

    public class TestNumber {
    public static void main(String[] args) {
    int year = 2020;

    // 直接打印数字
    System.out.printf("%d %n", year);

    // 总长度是 8,默认右对齐
    System.out.printf("%8d %n", year);

    // 总长度是 8,左对齐
    System.out.printf("%-8d %n", year);

    // 总长度是 8,不够补 0
    System.out.printf("%08d %n", year);

    // 千位分隔符
    System.out.printf("%,d %n", year * 10000);

    // 小数点位数
    System.out.printf("%.2f %n", Math.PI);

    // 不同国家的千位分隔符
    System.out.printf(Locale.FRANCE, "%,.2f %n", Math.PI * 10000);
    System.out.printf(Locale.US, "%,.2f %n", Math.PI * 10000);
    System.out.printf(Locale.UK, "%,.2f %n", Math.PI * 10000);
    }
    }
文章目录
  1. 1. 前言
  2. 2. 1、封装类
  3. 3. 2、Number 数字类
  4. 4. 3、基本类型与封装类转换
  5. 5. 4、最大值,最小值
  6. 6. 5、数字与字符串转换
  7. 7. 6、Math 数学方法
  8. 8. 7、格式化输出
隐藏目录