在Java 9中,下划线关键字的用途是什么?

1. 介绍

在Java 9中,下滑线字符'_'被添加为合法的标识符。在此之前,下划线实际上是Java语言中的保留字符,用于一些特定用途,例如将多个单词连接起来形成常量或类名。下划线符号被引入到Java 9中是为了改善Java编程体验。

2. 用途

2.1 作为标识符的一部分

Java 9之前,下划线作为保留字符,不能用作标识符的一部分。这在一些情况下会带来麻烦。例如,在测试程序中,通常使用一些有意义的名称来命名测试方法。在JUnit 5之前的版本中,使用@Test注释时,方法名称中不允许有下划线符号,因为它被解释为测试方法名称和测试方法参数之间的分隔符。这是因为在Java解析标识符时,下划线被视为一个标记,表示下一个单词的开始。在Java 9中,下划线可以作为标识符的一部分,因此可以在测试方法名中使用下划线符号了。

@Test

public void test_addition() {

//测试代码

}

2.2 作为数字字面值

在Java中,数字字面值的格式被限制为仅包含数字和小数点('.')字符。在Java 7及之前的版本中,使用下划线分隔数字可读性更加友好。从Java 7开始,下划线也可用于数字字面值中。Java 9支持使用下划线分隔数字,并且它被视为数字字面值中的有效字符。

int million = 1_000_000;

double pi = 3.14_15_92_65;

以上代码代表1百万和圆周率,但实际上它们与没有下划线的相同。

2.3 使用下划线代替未使用变量名

在Java开发人员的日常工作中,经常会出现声明一个变量但从未使用的情况。在Java 9之前,这通常是通过将变量名称命名为“unused”或注释代码来处理的,这会使代码看起来很笨拙。使用下划线作为未使用变量的名称可以更明确地表达意思。

String unused_ = "unused string";

2.4 作为导入静态变量的下划线通配符

在Java 9之前,在导入静态变量时只能使用星号通配符。在以下示例中,使用导入语句导入Math类中的静态变量的星号作为通配符。

import static java.lang.Math.*;

这将导入Math类中的所有静态变量,例如PI和E等常数。但是,可能只需要导入其中的一部分。在Java 9中,决定将下划线添加为第二种静态导入通配符,以下代码只导入Math类的常量PI

import static java.lang.Math.PI;

3. 限制

下划线在Java 9中被引入作为标识符的一部分,并且在其他用途中也能工作。但是,在Java中使用下划线仍然受到限制:

3.1 不能用作变量名的首字符和尾字符

尽管在Java 9中下划线可以用作标识符的一部分,但是它不能用作标识符的首字符或尾字符,仍然必须遵循Java中标识符的命名规则,而下划线代表特殊的含义。

int _variable = 10;//合法

int variable_ = 20;//合法

int _variable_ = 30;//非法,下划线不能作为首字符和尾字符

3.2 不能在数字字面值开头和结尾

尽管下划线在数字字面值中充当分隔符,但不能在数字字面值的开头或结尾使用下划线。

double pi_ = _3.14;//非法,不能在数字字面值的开头使用下划线

double _pi = 3.14_;//非法,不能在数字字面值的结尾使用下划线

3.3 不能与关键字或已定义标识符相同

下划线不能与Java中的关键字或在程序中已经定义的标识符相同。

int _for = 10;//非法,for是Java中的关键字

int value_ = 20;//合法

int value = 30;

double _value = 40;//非法,_value已经在程序中定义

4. 总结

在Java 9中,下划线字符不再是保留字符,可以用作标识符的一部分,并且在其他用途中也能工作。Java 9引入了下划线符号以改善Java编程体验,提高程序员的生产力和代码的可读性。它可以用作数字字面值的分隔符,导入静态变量的通配符,未使用的变量名以及在测试方法名称中使用下划线。

后端开发标签