Java 程序设计基础之字面值

所有计算机编程语言的设计初衷,都是为了高效地解决现实世界里的繁琐任务。所谓巧妇难为无米之炊,第一步要做的就是从现实实体中提取出,可用于计算机输入的表达。比如现实世界中最常见的数字、文字、图像、声音等等,在 Java 世界统一被称为:【数据】,有了数据才有后续的一切。


Java 字面值

字面值就是数据。

一个具体的数字(3.2,996),或是一个字符串(”I love China“)——文本,都是一个字面值。

字面值,本身就是一个具体(固定的)的值,也只是一个值,是数据最具体,直观的表现。

符合 Java 字面值定义的字面值示例:10,100,3.14,true,false,”I am a Chinese”,’A’,‘b’


字面值类型

我们知道,数据在现实世界中是分门别类的,比如整数、小数、文本等等。将其映射到 Java 中也是一样的。

Java 中对数据的数据类型也是有明确分类定义的,分为:基本数据类型(Primitive Type)和引用数据类型(Reference Type)。

后续章节,我们会更加深入的了解 Java 中定义的数据类型以及其使用。这里如有不理解的地方,不要深究,等待深入学习之后再来进行回顾就一目了然了。

这里,探讨字面值类型的主要目的,是为了明确:

Java 中我们可以使用什么数据类型的变量或者常量存储字面值,或是特定数据类型变量或者常量可以使用什么类型的字面值进行赋值,这是关键的!


根据 Java 的基本数据类型和引用类型,Java 中的字面值类型大致可分为:整型字面值、浮点字面值、布尔型字面值、字符和字符串字面值 以及 特殊字面值 五大类

整型字面值

Java 的整型字面值值主要有如下 4 种形式(4 种进制表示):

  • 十进制数形式(默认):基 10, 包含从 0-9 的数字。如:54、-67、0。
  • 八进制形式:基 8, 包含从 0-7 的数字,八进制字面值的表示 以 0 开头,如:0125 表示十进制数 85,-013 表示十进制数 -11。
  • 十六进制形式:基 16, 包含从 0-9 的数字,和从 A-F 的字母。十六进制字面值的表示 以 0x 或 0X 开头,如 :0x100 表示十进制数 256,-0x16 表示十进制数 -22。
  • 二进制形式: 基 2, 包含 0 和 1。二进制字面值的表示 以 0b 或 0B 开头,如:0b11010。

–> 默认情况下,整型字面值对应的是 基本数据类型——整数类型 中的 int 类型(整型),默认在内存中占 32 位。

–> 当整型字面值以 l 或者 L 结尾时(建议使用大写的 L 而非小写的 l,因为容易和 1 混淆),对应的是 基本数据类型——整数类型 中的 long 类型(长整型),表示一个长整型数,它在内存中占 64 位。

–> 如果你可以确定整型字面值(不以 L 结尾)在 基本数据类型——整数类型 中的 byteshort 取值范围之内,你可以把它赋值给 byte(8 bit), short(16 bit) 类型(字节型,短整型),Java 会自动完成转换,如果试图将超出范围的字面值赋给某一类型(比如把 128 赋给 byte 类型),编译通不过。


浮点型字面值

Java 的浮点字面值主要有如下 2 种形式:

  • 小数:如 12.34、-98.0。
  • 科学记数法形式:如 1.75e5 ,2.38E3,其中 e 或 E 之前必须有数字,且 e 或 E 之后的数字必须为整数。

默认情况下(或以 d 或者 D 结尾,写不写都行),浮点字面值是具有双精度型(double)的,对应的是 基本数据类型——浮点类型 中的 double 类型(双精度浮点型),在内存中占 64 位。

当浮点字面值以 f 或者 F 结尾的时,对应的是 基本数据类型——浮点类型 中的 float 类型(单精度浮点型),在内存中占 64 位。


布尔型字面值

Java 的布尔型字面值,对应的是 基本数据类型——布尔类型 ,即 boolean 类型。

只有两个值,即 false(假)和 true(真)。


字符型和字符串字面值

1 –> 字符型字面值

Java 中的字符型字面值,是用单引号(英文输入)引起来的一个字符,如 ‘e’、E’。

注意,字符型字面值中的字符可以八进制或者十六进制,八进制使用 ‘反斜杠加3位八进制数字’ 表示,例如 ‘\141’ 表示字母 a。十六进制使用 ‘\u加上4为十六进制的数’ 表示,如 ‘\u0061’ 表示字符 a。

不能直接输入的字符,可以使用 转义字符,如 ‘\n’‘\t’‘\r’。常见的转义字符序列有:

\ddd(八进制) 、 \uxxxx(十六进制Unicode字符)、'(单引号)、"(双引号)、\ (反斜杠)\r(回车符) \n(换行符) \f(换页符) \t(制表符) \b(回格符)


2 –> 字符串字面值

字符串字面值则使用双引号引起来的单个或多个字符。如:“I love China”

字符串字面值中同样可以包含字符字面值中的 转义字符序列。字符串必须位于同一行或者使用 + 运算符,因为Java 没有续行转义序列。

Java 字符串字面值中的单引号和双引号不可混用。字符串中包含双引号时,需要对其进行转义处理。


特殊字面值

null 是 Java 数据类型中的一种特殊数据类型。

这里将其也看作是一种特殊字面值,它可以赋值给 Java 中的任意 引用类型


最后,再次重申一遍:字面值就是一个具体的值。

可以看出,Java 字面值和前面我们说过的,Java 标识符和关键字一样,都是 Java 语法中最最基础的定义。

Author

Waldeinsamkeit

Posted on

2017-10-12

Updated on

2023-04-03

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.