1.整数文字

现在来一个有趣的新话题——文字。直接在程序代码中写入的数据称为文字。我们不是在谈论任何旧数据,而是原始类型和类型的值String

例如,假设您有以下代码:

代码 文字
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

此代码中的文字是数字5、数字10和字符串 ' Sum = '。

在 Java 中,包括文字在内的所有内容都有类型。默认情况下,代码中的所有整数文字(整数)都是ints. int 类型是标准的 Java 整数类型。

更重要的是,如果您决定在代码中将整数文字分配给字节变量或短变量,则不会有任何问题。您只需要确保文字值位于变量类型可以存储的值范围内。

Java 编译器足够聪明,可以理解为byte变量分配整数文字 100 而不会产生问题。

例子:

代码 描述
int a = 300;
这将编译得很好。
byte a = 100; 
这将编译得很好。
byte a = 300; 
会出现编译错误,因为最大字节值为 127。

long您还可以在代码中编写文字。为此,请在整数末尾添加拉丁字母“L”或“l”。

例子:

代码 描述
long a = 3000000000L; 
这将编译得很好。
long a = 3000000000; 
编译错误:30 亿对于 int 文字来说太大了。
int a = 3000000000L; 
编译错误:字面量是long,变量是int。此外,30 亿比最大整数还多。

您是否注意到读取 10 位或更多数字的大量数字有多么困难?您无法立即判断代码是 30 亿还是 300 亿。为了使代码更具可读性(这很重要!),Java 允许在数字文字中插入下划线(它们不影响数字的值)。

上面的例子可以用下划线重写,使它更清楚一点:

代码 描述
long a = 3_000_000_000L; 
这将编译得很好。
long a = 3_000_000_000; 
编译错误:30 亿对于 int 文字来说太大了。
int a = 3_000_000_000L; 
编译错误:字面量是long,变量是int。此外,30 亿比最大整数还多。

但是我们不能在数字文字中使用逗号,因为它们已经被用于其他目的。例如,用于在调用方法时将参数彼此分开。



2. 实数字面量

在您的代码中,您不仅可以指定整数,还可以指定浮点文字(实数)。

其实规则很简单:如果代码中的数字有小数点,那么这个数字就是浮点数。不仅是任何文字,而且是double文字。

您可以创建浮点文字,但需要在数字末尾添加字母“F”(或“f”)才能做到这一点

例子:

代码 描述
double a = 100.0; 
这将编译得很好。
double a = 100.;
这将编译得很好。
double a = .0;
这将编译得很好。
float a = 100.0f; 
这将编译得很好。
float a = 100.0; 
会出现编译错误:变量是float,但字面量是double。

顺便说一句,您可以通过简单地显式地将整数文字转换为浮点数或双精度文字)。例子:appending the suffix 'F' (for float) or D (for double)

代码 描述
double a = 100D; 
这将编译得很好。
float a = 100F; 
这将编译得很好。
int a = 300D; 
会出现编译错误:变量是int,但字面量是double.

浮点字面值可以使用科学记数法:除了数字的带符号部分,还可以指定十的幂。例子:

文字 数学符号 最终价值
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001


3. 字符串字面量

您还可以在代码中指定整行文本。为了告诉编译器将字符串视为数据(文字)而不是代码的一部分,整个字符串两边都用双引号括起来。

如果一行代码有多个双引号,则将它们分成两对。第一个双引号表示文字的开始。下一个表示文字的结尾。之后的下一个再次标志着新文字的开始。next 标记第二个文字的结尾。等等。

每个这样的文字都是一个String.

例子

代码 解释
"+" + "+" + "+" + "+" + "+"
一行有 5 个文字。+它们每个都由一个字符组成 
""
这个文字是一个空字符串。没有字符的字符串。
"2+3" + "-5"
这里有两个字面量。结果将是字符串 ' 2+3-5',而不是数字
"return" + ";"
这里还有两个文字。这里没有返回语句。

如果字符串文字太长,可以将其分成几行并用“加号运算符”粘在一起:

代码 解释
String s = "I hold it true, whate'er befall, "
         + "I feel it when I sorrow most; "
         + "'Tis better to have loved and lost "
         + "Than never to have loved at all.";
如果将此行输出到屏幕,那么所有文本将显示在一行中!


4. 字面量

您不仅可以在代码中指定字符串文字,还可以指定由单个字符组成的文字。请注意,我们不是在讨论由单个字符组成的字符串,而是在讨论类型为char.

与字符串不同,字符文字被单引号包围。在单引号内必须有一个字符并且只有一个字符。您不能使用空的单引号。

例子:

代码 解释
'A'
类型为 char 的文字。它包含拉丁字母“A”。
'@' 
类型为 char 的文字。它包含“@”符号
'' 
类型为 char 的文字。它包含一个日语字符。而这也是可能的。
'\u1f3a'
类型为 char 的文字。它包含一个由其编号指定的 Unicode 字符。

最后一个示例使用特殊符号分配一个 Unicode 字符:首先我们有前缀\u,然后是 4 个十六进制字符。下一课包括有关此的详细信息。