变量、常量与关键字详解

变量、常量与关键字详解



前言

变量和常量都需要使用标识符进行命名,而关键字本身就是预定义的标识符,变量和常量都有数据类型,而关键字则没有数据类型的概念。本文会详细讲解三者之间的一些关联与区别。


一、变量

变量详解

二、常量

1.定义

常量,即常量值或固定值,在Java中通常使用final关键字进行定义。一旦为常量分配了值,那么这个值就不能再被改变。常量可以是任何基本数据类型(如int、double、char等),也可以是引用类型(如String、自定义类的对象等)。Java中的常量通常使用大写字母进行命名,以区分变量。

可以理解成变量的定义方式,然后加上final关键字进行修饰,因为final修饰时,

2.作用

  1. 提高代码可读性(语义明确性):常量在命名上通常使用大写字母,并且其值在程序运行期间是不可变的。这种命名和特性使得常量的语义非常明确,能够清晰地表达其代表的是一个固定不变的值。且使用有意义的常量名可以使得代码更加易于理解,即使在不熟悉代码具体实现的情况下,通过常量名也能大致了解其作用。
  2. 提高代码可读性和维护性:如果在程序中多处使用了某个固定的值,当这个值需要改变时,只需修改常量的定义,而无需搜索整个代码库进行替换。
  3. 提高代码安全性:通过将不应该被修改的值定义为常量,可以防止程序的其他部分意外或故意修改这些值。
  4. 优化性能:虽然现代Java虚拟机(JVM)会对变量和常量进行一系列优化,但在某些情况下,使用常量可能会带来性能上的优势。由于常量的值在编译时就已经确定,并且不会改变,JVM可能会对其进行特殊处理,如内联常量值或进行其他优化,以提高程序的运行效率。

3.跟变量的区别

常量和变量在值的可变性命名规范声明与赋值类型确定性以及作用域等方面存在明显的区别。

  1. 值的可变性:常量在程序运行期间的值是固定不变的,一旦初始化赋值后,就不能再被修改。而变量则可以在程序执行过程中被重新赋值,其值是可以改变的。
  2. 命名规范:按照Java编码规范,常量名一般要求全部大写,而变量名则要求小写。这有助于在代码中区分常量和变量。
  3. 声明与赋值:常量在声明时必须进行初始化赋值,并且只能赋值一次。这意味着一旦为常量分配了值,就不能再为其分配新的值。变量则可以在声明时初始化赋值,也可以在后续的代码中重新赋值。
  4. 类型确定性:常量的类型在定义时就必须确定,且之后不能更改。而变量的类型虽然也需要在声明时确定,但在某些情况下,可以在声明后再进行赋值时确定其具体的类型(例如使用局部变量类型推断)。
  5. 作用域:常量的作用域通常是全局的,特别是当它们被定义为静态常量时。而变量的作用域可以是全局的,也可以是局部的,这取决于它们在代码中的声明位置

4.使用场景

  1. 配置信息:如数据库连接信息(URL、用户名、密码等)、系统参数等,可以定义为常量,方便管理和修改。
  2. 数学常量:如π、e等数学中常用的常量,可以定义为Java常量,提高代码的可读性。
  3. 状态常量:表示某种状态或条件的常量,如表示性别的常量(MALE、FEMALE)等。

5.示例

public class ConstantExample {  
    // 定义数学常量PI  
    public static final double PI = 3.141592653589793;  
      
    // 定义状态常量  
    public static final String MALE = "Male";  
    public static final String FEMALE = "Female";  
      
    public static void main(String[] args) {  
        // 使用常量  
        double area = PI * 5 * 5;  
        System.out.println("The area of the circle is: " + area);  
          
        String gender = MALE;  
        System.out.println("The gender is: " + gender);  
    }  
}

在上面的示例中,因为圆周率是一个固定的值,且男生女生也是固定的,后续不需要改动,所以我们可以定义为一个数学常量PI和两个状态常量MALE、FEMALE。在main方法中,就可以直接使用这些常量。static和final关键字的作用看下文。


关键字

1.使用注意点

  1. 关键字不能用作变量名、方法名、类名、包名和参数
  2. 主要用于表示数据类型、程序结构、修饰符以及控制流程

2.关键字及其主要作用

关键字比较多,就不举例子了,在之前以及后续的例子代码中都会存在一部分内容。

1)数据类型关键字:

  1. boolean:用于声明布尔类型的变量。
  2. byte、short、int、long:用于声明不同大小的整数类型的变量。
  3. float、double:用于声明浮点类型的变量。
  4. char:用于声明字符类型的变量。

2)访问控制关键字:

  1. public:表示公共权限,可以被任意类访问。
  2. protected:表示受保护的权限,可以被同包类访问,或者如果是该类的子类也可以访问。
  3. default(默认):表示同包权限,只能在本类以及同包中的不同类访问。
  4. private:表示私有权限,只能在本类中访问。

3)修饰符关键字:

  1. static:用于修饰类的属性、方法、代码块和内部类,表示它们属于类本身而不是类的实例。
  2. final:用于修饰类、方法、变量和参数,表示它们不能被修改(对于类和方法)或重新赋值(对于变量)。
  3. abstract:用于修饰类和方法,表示它们是抽象的,不能被实例化或调用。
  4. native:用于修饰方法,表示该方法是用其他语言实现的。
  5. synchronized:用于修饰方法或代码块,表示同一时间只能有一个线程可以执行某个代码块或方法。
  6. transient:用于修饰字段,表示该字段不应被序列化。
  7. volatile:用于修饰变量,表示该变量可能会被多个线程异步修改。

4)程序结构关键字:

  1. class:用于声明一个类。
  2. interface:用于声明一个接口。
  3. enum:用于声明一个枚举类型。
  4. extends:用于表示一个类是另一个类的子类。
  5. implements:用于表示一个类实现了某个接口。

5)控制流程关键字:

  1. if、else、switch、case、default:用于条件判断。
  2. for、while、do-while:用于循环控制。
  3. break、continue:用于中断或跳过循环中的某些迭代。
  4. return:用于从方法中返回值。

6)其他关键字:

  1. package:用于声明类或接口所属的包。
  2. import:用于导入其他包中的类或接口。
  3. new:用于创建类的实例。
  4. this:用于引用当前对象的实例。
  5. super:用于引用父类的实例。
  6. instanceof:用于测试一个对象是否是指定类型的实例。
  7. void:用于表示方法不返回任何值。
  8. try、catch、finally、throw、throws:用于异常处理。
  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jz_Stu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值