Literals in Java

2025 年 8 月 12 日 | 阅读 6 分钟

Java 中,字面量是源代码中表示固定值的符号。在词法分析中,给定类型的字面量通常被称为 标记。在本节中,我们将讨论 **Java 中的字面量** 这个术语。

字面量

在 Java 中,字面量是直接出现在程序中的常量值。它可以直接赋给变量。Java 有各种类型的字面量。下图代表了一个字面量。

Literals in Java

字面量的作用

字面量通过允许开发人员直接将固定值赋给变量,使 Java 代码更具可读性和简洁性。无论是初始化计数器、设置阈值还是处理配置值,字面量都无需不必要的变量声明。

Java 中的字面量类型

Java 中主要有种字面量类型

  1. 整数字面量
  2. 字符字面量
  3. 布尔字面量
  4. 字符串字面量
Literals in Java

整数字面量

整数字面量是数字序列。有以下四种整数字面量

  • 十进制整数:这是一组由 0 到 9 的数字组成的数字。它可以是正数 (+) 或负数 (-)。请注意,数字之间不允许有逗号和非数字字符。例如,5678、+657、-89 等。
  • 八进制整数:它是数字 0 到 7 的组合,前面有一个前导 0。例如,045、026
  • 十六进制:0x0X 开头的数字序列被认为是十六进制整数。它也可以包含从 afAF 的字符,分别代表数字 1015。例如,0xd、0xf
  • 二进制整数:基数为 2,其数字由 0 和 1 组成(您可以在 Java SE 7 及更高版本中创建二进制字面量)。前缀 0b 代表二进制系统。例如,0b11010。

实数字面量

包含小数部分的数字称为实数字面量。我们也可以用指数形式表示实数字面量。例如,879.90、99E-3 等。

反斜杠字面量

Java 支持一些特殊的反斜杠字符字面量,称为反斜杠字面量。它们用于格式化输出。也称为反斜杠转义序列。例如,请参阅下表。

反斜杠字面量含义描述
\n换行用于换行
\t水平制表符用于水平制表符
\b退格用于空格
\v垂直制表符用于垂直制表符
\a可听见的响铃用于发出轻微的哔哔声
\r回车用于回车
\'单引号用于单引号
\"双引号用于双引号
\\反斜杠用于插入反斜杠
\?问号用于插入问号
\0Null用于 null 值
\f换页符将光标移到下一页的开头

字符字面量

字符字面量表示为用引号 ('') 括起来的字符或转义序列。它始终是 char 类型。例如,'a'、'%'、'\u000d' 等。

字面量中的 Unicode 表示

Java 支持 Unicode 编码,允许字面量表示来自不同语言和符号的字符。例如,'\u0041' 表示字符 'A'。这对于国际化和处理不同的字符集很有用。

字符串字面量

字符串字面量是包含在引号 ("") 标记中的字符序列。它可以是字母、数字、特殊字符、空格等。例如,"Jack"、"12345"、"\n" 等。

浮点数字面量

包含小数的值是浮点数字面量。在 Java 中,float 和 double 原始类型属于浮点数字面量。处理浮点数字面量时请记住这一点。

  • float 类型的浮点数字面量以 F 或 f 结尾。例如,6f、8.354F 等。这是一个32位浮点数字面量。
  • double 类型的浮点数字面量以 D 或 d 结尾。可以省略 D 或 d。例如,6d、8.354D 等。这是一个64位 double 字面量。
  • 它也可以用指数形式表示。

浮点数

十进制

指数形式的十进制

布尔字面量

布尔字面量的值是 true 或 false。它也可以有值 0 和 1。例如,true、false、0 等。

Null 字面量

Null 字面量通常在程序中用作标记,表示引用类型对象不可用。除了原始类型变量之外,null 值可以赋给任何变量。

类字面量

类字面量是通过取一个类型名称并附加 .class 扩展名形成的。例如,Scanner.class。它引用表示类型本身的 Class 类型的对象。

在数字字面量中使用下划线

从 Java SE 7 开始,可以在数字字面量中使用下划线 (_) 来提高可读性。例如,int amount = 1_000_000; 比 1000000 更容易理解。但是,下划线不能放在数字的开头或结尾,也不能放在小数点附近。

使用下划线 (_) 的限制

  • 可以在数字的开头、结尾和中间使用。
  • 在浮点数字面量中,它可以紧邻小数点。
  • 另外,可以在 F 或 L 后缀之前使用。
  • 在需要一串数字的位置。

无效的字面量

存在一些无效的字面量声明。

为什么要使用字面量?

避免在某处定义常量并为其创建标签。而是将常量操作数的值作为指令的一部分写入。

字面量的实际应用

字面量在实际应用中经常使用,例如税务计算、利息计算和格式化消息。

例如,在银行应用程序中使用 double rate = 0.075; 设置了一个清晰、固定的利率。

如何使用字面量?

Java 中的字面量可以通过前缀 = 加上特定值来识别。

让我们创建一个 Java 程序并使用上面讨论的字面量。

控制语句中的字面量使用

字面量通常用于 if、while 和 switch 等控制语句中,用于将变量与常量进行比较,从而增强代码逻辑和控制流的清晰度。

示例:Java 字面量

示例

编译并运行

输出

987
4534.99
19765.567
2020
26
p
Java
true
55
null
!
	backslash literal
?

结论

Java 中的字面量通过在源代码中直接提供固定值,在编程中起着至关重要的作用。这些常量通过消除仅用于存储静态值的不必要变量的需要,使代码更具可读性和可维护性。Java 支持各种类型的字面量来有效处理不同的数据类型,包括整数、浮点数、布尔值、字符和字符串字面量。此外,二进制、八进制、十六进制和类字面量等高级类型提供了值表示的灵活性。

Java 字面量选择题

1. 下列哪一项是 Java 中的有效二进制字面量?

  1. 0b102
  2. 0b1101
  3. 0b2101
  4. 1101b
 

答案:B

解释:二进制字面量以 0b 或 0B 开头,并且只包含 0 和 1。0b1101 是有效的;其他包含无效数字或格式不正确。


2. 下列哪一项是 Java 中的有效浮点数字面量?

  1. 14
  2. 14F
  3. 14
  4. 14
 

答案:B

解释:浮点数字面量必须以 f 或 F 结尾。3.14F 是正确的;3.14 默认为 double,其他格式无效。


3. Java 中十六进制字面量的正确表示是什么?

  1. 0x1G
  2. 0x1A
  3. 1xA
  4. #1A
 

答案:B

解释:十六进制字面量以 0x 或 0X 开头,后跟数字 0-9 或字母 A-F/a-f。0x1A 是有效的。


4. 下列代码的输出是什么?

  1. @
  2. A
  3. \u0041
  4. 编译错误
 

答案:B

解释:\u0041 是字符 'A' 的 Unicode 转义。Java 会正确解释并打印 A。


5. 下列哪一项不是 Java 中的有效布尔字面量?

  1. true
  2. false
  3. 0
  4. false == false
 

答案:C

解释:Java 只允许 true 和 false 作为布尔字面量。0 是一个整数,对于布尔上下文无效。