三、Java-----常量

定义:

在Java中,常量是一种不可变的变量,是程序运行期间,固定不变的量。在Java中,通过final关键字声明,一旦赋值不可修改。

语法格式为:

final 数据类型 常量名 = 初始值;

例如:

        final int MAX_VALUE = 100;         // 整型常量
        final double PI = 3.14159;         // 浮点型常量
        final char CHARACTER = 'A';        // 字符型常量
        final String GREETING = "Hello";   // 字符串常量
        final String EMPTY = null;         // 空常量
        final boolean FLAG = true;         // 布尔常量

分类:

常量分为四类:字面常量、命名常量、编译时常量、运行时常量。

1.字面常量:

定义:

字面常量是直接写在代码里的固定值,无名称,不可修改,可用于初始化final变量。

例如:

        final int MAX_VALUE = 100;         // 100是字面常量
        final double PI = 3.14159;         // 3.14159是字面常量
        final char CHARACTER = 'A';        // A是字面常量
        final String GREETING = "Hello";   // Hello是字面常量
        final String EMPTY = null;         // null是字面常量
        final boolean FLAG = true;         // true是字面常量

分类 :

字面常量的分类
类别示例备注
整型常量123(十进制)、0b1010/0B1010(二进制表示十进制的10)、017(八进制表示十进制的15)、0x1F/0X1F(十六进制表示十进制的31)

①不带小数点的数字(整数)

②支持不同进制

浮点数常量3.14、3.14F、7.022e23

①带小数点的,数字(小数)

②支持常规写法和科学计数法

③默认类型为double,若声明float类型,需加后缀F或f

字符常量'A'、'a'、'1'、'\n'(换行)、'\t'(制表符)、'\\'(反斜杠)、'\''(单引号)、'\uXXXX'(Unicode编码,如'\u0041'表示'A')

①由英文符号''(单引号)括起来的单个字符

②支持转义字符

字符串常量"123"、"hello"、"哈哈哈"

①由英文符号""(双引号)括起来的字符串

②支持转义字符(同上)

布尔常量true、false有且只有两个,分别是true和false
空常量null表示空引用,不指向任何对象

注意:

①与Java中数据类型区分:Java中,字符串、整型、浮点型、字符型、布尔型,称作数据类型。

②浮点精度问题:浮点数字面常量可能会存在精度损失。

③注意字符与字符串的区分(如'A'和"A")。

2.命名常量:

通过final关键字声明的有名称的不可变变量。

例如:

        final int MAX_VALUE = 100;         // MAX_VALUE是命名常量
        final double PI = 3.14159;         // PI是命名常量
        final char CHARACTER = 'A';        // CHARACTER是命名常量
        final String GREETING = "Hello";   // GREETING是命名常量
        final String EMPTY = null;         // EMPTY是命名常量
        final boolean FLAG = true;         // FLAG是命名常量

3.编译时常量:

定义:在编译时即可确定的常量。

必须满足的条件:

(1)使用final声明

(2)类型为基本类型或者字符串类型(String)

(3)初始值为字面常量或其他编译时常量。

4.运行时常量:

定义:在运行时才能确定的常量。

例如:

//生成一个随机数
final int RANDOM = new Random().nextInt();  // 运行时赋值
//输出当前日期时间
final String TIME = LocalDateTime.now().toString();  // 运行时动态生成

注意:在IDEA上运行时,用打印语句输出,否则控制台不显示结果。

命名规范:

(1)字母全大写,单词之间用下划线_分割(如:MAX_VALUE)。

(2)表达意思要清晰,避免无意义名称。

内存管理:

1.编译时常量:

①编译时常量会被编译器直接优化为字面值。

例如:

final int MAX = 100;
int value = MAX * 2;  // 编译后等价于 int value = 200;

②字符串常量存储在字符串常量池中,相同值的字符串会共享内存。

2.运行时常量:

运行时常量存储在堆内存或栈内存中,无法被编译器优化。

使用场景:

1.避免“魔法数字”:

通常用常量代替代码中的硬编码值,从而提高代码的可读性和可维护性。

例如:

// 不推荐
if (value > 100) { ... }

// 推荐
final int MAX_VALUE = 100;
if (value > MAX_VALUE) { ... }

2.配置参数:

将程序中固定的值(如文件路径、时间等)声明为常量。

3.替代枚举:

在某些简单的场景,常量可以替代枚举(enum)。

博客均为博主自行学习总结,如有纰漏,请各位大佬指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圆响石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值