Java基础知识——字面量

发布于:2025-06-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

一、字面量的定义与分类

1.基本概念

2.分类

二、特殊字面量的使用规则

1.整型字面量

2.浮点型字面量

3.字符型字面量

4.字符串字面量

5.布尔字面量

6.空字面量

三、字面量的类型提升与转换

1.自动类型提升

2.强制类型转换

四、字面量的注意事项

1.布尔值限制

2.数值溢出

3.下划线分隔符

4.默认值规则

五、示例代码

1.字面量的常见使用场景

初始化变量:

直接参与表达式:

进制转换:

2. 特殊字面量:类字面量(Class Literal)

六、关键总结


一、字面量的定义与分类

1.基本概念

  • 字面量是直接在代码中写出的固定值(如 3.14'A'true)。
  • 编译器根据字面量的形式自动推断其数据类型。
  • 作用:用于初始化变量、传递参数或直接参与表达式计算。
  • 特点
  • 固定值,不可变。
  • 书写格式严格遵循 Java 规则。
  • 字符串字面量会被 JVM 存入字符串常量池,实现重用。

2.分类

类型

示例

说明

整型

420x2F(十六进制)

默认 int 类型;长整型需加 L(如 100L

浮点型

3.141e-47f

默认 double 类型;float 需加 F(如 3.14F

字符型

'A''\u0020'

单引号包裹;支持 Unicode 转义(如 '\u0041' 表示 'A'

布尔型

truefalse

仅两个值,不可用 0/1 代替

字符串

"Hello"

双引号包裹;支持转义符(如 \n

空值

null

表示对象引用为空


二、特殊字面量的使用规则

1.整型字面量

  • 长整型:必须加 L 后缀(如 100L),否则可能被当作 int 导致溢出。
  • 十六进制:前缀 0x0X(如 0x1F)。
  • 八进制:前缀 0(如 077),但不推荐使用(易混淆)。

类型

示例

说明

十进制

123-456

默认为int类型。

二进制

0b10100B1010

0b0B开头,表示十进制的10

八进制

075

0开头,表示十进制的61(Java 7+ 支持)。

十六进制

0x3F0XFF

0x0X开头,表示十进制的63255

长整型

100L100l

后缀Ll表示long类型。

2.浮点型字面量

  • 科学计数法:如 1.39e-47f(表示

    1.39×10−471.39 \times 10^{-47}1.39×10−47)。

  • float 必须加 F:若赋值给 float 变量不加 F,编译报错(默认 double)。

类型

示例

说明

单精度

3.14f3.14F

后缀fF表示float类型。

双精度

3.141593.14159d

默认为double类型,可省略后缀dD

3.字符型字面量

  • 可直接用整数赋值(如 char c = 97; 等价于 'a'),范围 0-65535

类型

示例

说明

标准字符

'A''0''中'

用单引号括起一个字符,支持 Unicode 编码(如'\u0041'表示'A')。

转义字符

'\n'(换行)、'\t'(制表符)

用反斜杠\转义特殊字符(如'\''表示单引号)。

4.字符串字面量

  • 使用 + 连接(如 "x=" + x),若表达式以字符串开头,后续操作数自动转为字符串。

类型

示例

说明

普通字符串

"Hello, World!"

用双引号括起多个字符,内容可为空(如"")。

特殊字符

"He said: \"Hello!\""

使用转义字符\处理引号(如\"表示双引号)。


5.布尔字面量

类型

示例

说明

布尔值

truefalse

仅有的两个值,表示逻辑真或假。

6.空字面量

类型

示例

说明

空引用

null

表示对象引用的空值,不能赋值给基本类型变量。

三、字面量的类型提升与转换

1.自动类型提升

  • 小范围类型可自动提升为大范围类型(如 intlong)。
  • 示例:char 可自动提升为 int(取 Unicode 值)。

2.强制类型转换

  • 大范围转小范围需显式转换(如 doubleint),可能丢失精度:

   int i = (int) 3.14; // i = 3(截断小数)


四、字面量的注意事项

1.布尔值限制

  • 仅允许 true/false不可与整数互换(如 if (a) 需写为 if (a != 0))。

2.数值溢出

  • 整数字面量超出类型范围会编译报错(如 int a = 2147483648; 超出 int 最大值)。

3.下划线分隔符

  • 为提高可读性,数字字面量可用 _ 分隔(如 1_000_000)。

4.默认值规则

  • 类成员变量未初始化时,字面量有默认值(如 int 默认为 0boolean 默认为 false)。

五、示例代码

1.字面量的常见使用场景

初始化变量:

int age = 25; // 整数字面量

double price = 9.99; // 浮点数字面量

char grade = 'A'; // 字符字面量

String name = "Java"; // 字符串字面量

boolean flag = true; // 布尔字面量

Object obj = null; // 空字面量

直接参与表达式:

System.out.println(100 + 200); // 整数字面量相加

System.out.println("Hello" + "World"); // 字符串拼接

System.out.println(true && false); // 布尔值逻辑运算

进制转换:

int binary = 0b1010; // 二进制转十进制(10)

int octal = 012; // 八进制转十进制(10)

int hex = 0xA; // 十六进制转十进制(10)


// 整型与浮点型

long big = 0x7FFFFFFFL; // 长整型十六进制

float pi = 3.1415926F; // float 必须加 F

// 字符与字符串

char letter = 65; // 'A'

String msg = "ID: " + 1001; // 字符串拼接

// 科学计数法

double atom = 1.39e-47; // 1.39 × 10⁻⁴⁷

// 布尔值

boolean isValid = true; // 仅允许 true/false


2. 特殊字面量:类字面量(Class Literal)

  • 定义:通过 类名.class获取类的 Class对象。
  • 用途:解决泛型类型擦除问题,动态获取类型信息。
  • 示例

Class<String> stringClass = String.class; // 获取 String 的 Class 对象

List<String> list = new ArrayList<>(10); // 泛型类型擦除,运行时无法直接获取

六、关键总结

  • 类型后缀L(长整型)、F(浮点型)、D(双精度,可省略)。
  • 特殊字符\uXXXX(Unicode 转义)、\n(换行符)。
  • 字符串特性:拼接时非字符串操作数自动转换,且不可变(修改会创建新对象)。
  • 布尔严格性:Java 强制使用 true/false,增强代码可读性和安全性。

空字面量的限制

  • null 只能赋值给引用类型变量(如 StringObject),不能赋值给基本类型。

以上内容均基于文档中明确提到的知识点整理,未提及的内容(如二进制字面量)未包含在内。


网站公告

今日签到

点亮在社区的每一天
去签到