说说 Java 的字面值常量

当值的类型不明确时,通过字面值常量(Literal)来让编译器准确地识别出其类型。

1 基本表示法

示例 输出结果(二进制形式) 说明
int i = 0xff 11111111 16 进制小写形式
int i = 0XFF 11111111 16 进制大写形式
int i = 0177 1111111 8 进制形式
char c = 0xffff 1111111111111111 char 类型 16 进制形式
byte b = 0x7f 1111111 byte 类型 16 进制形式
short s = 0x7fff 111111111111111 short 类型 16 进制形式
long l=300L 100101100 long 类型,不建议使用 l,因为容易与 1 相混淆。
  1. 以 16 为基数的十六进制表示法,适用于所有整型数据类型,带 0x 或 0X 前缀,后跟 0-9 或 a-f (大写或小写)。
  2. 如果在初始化某个类型的数值时,赋值超出其类型的数值范围,那么编译器就会报错。char、byte 和 short 类型的值,如果超过最大范围,编译器会提示我们需要声明强制转换:

  1. 以 8 为基数的八进制表示法,带 0 前缀,后跟 0-7。

2 下划线表示法

Java 7 + 可以在数字字面量表示法中包含下划线 _,这可以让数字表达的更清晰。

规则如下:

  1. 仅限单条下划线 ,不能多条相连。
  2. 数值开头和结尾不能出现下划线。
  3. F、D 和 L的前后不能出现下划线。
  4. 二进制前导 b 和 十六进制 x 前后不能出现下划线。
public class Underline {

    public static void main(String[] args) {
        double d = 234_293_239.293_239;
        System.out.println(d);

        int i = 0b1111_1010_1111_1010_1111_1010_1111;
        System.out.println(Integer.toBinaryString(i));
        System.out.printf("%x%n", i);

        long l = 0xfa_fa_fa_f;
        System.out.printf("%x%n", l);
    }
}

注意: Java 中 System.out.printf() 或 System.out.format() 中可以使用 %n 实现忽略平台间差异的换行符。对于 System.out.println(),仍然必须使用 \n

发布了626 篇原创文章 · 获赞 705 · 访问量 91万+

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/104107149