【JavaSE专栏7】Java 常量、变量及其作用域

简介: 【JavaSE专栏7】Java 常量、变量及其作用域

一、Java 常量

在 Java 中,常量就是在程序执行过程中不会变化的量,有两种实现方式,分别为:

  1. 字面量:如 abc123 等。
  2. 通过 final 关键字修饰的,有名称的常量。

1.1 字面量

请看以下代码块:

public class Main {
    public static void main(String[] args) {
        System.out.println(123);
    }
}

代码中的 123 就是常量,它不能被更改。


1.2 Final 修饰

Final 修饰的常量定义的语法为 private static final 类型 名称,请看以下代码块:

public class Main {
    private static final int MAX_SIZE = 10;
    public static void main(String[] args) {
        for(int i = 0; i < MAX_SIZE; i ++) {
            System.out.println(i);
        }
    }
}

提示:其中 static 为静态修饰关键字,将在后续章节中讲解。

代码中的 MAX_SIZE,就是一个常量,它也一样不能被改变。

如果开发者尝试去改变常量,则无法通过编译,如下图所示。

提示:在实际开发中,建议为常量赋初始值,如果不赋予初始值也有默认值,具体可见《【JavaSE专栏5】Java 基本数据类型和取值范围》的 2.2 小节。


二、Java 变量

在 Java 中,变量就是在程序执行过程中,其值可以发生变化的量,在实际开发中很常见。

2.1 变量定义

在 Java 中,一般通过基本数据类型来定义基本变量,比如:

  • int a;
  • double b;
  • float c;

此时在变量中存放的就是一个具体的基本数据类型的值。

在实际开发中,更多的是定义类、数组、引用类型的变量,比如:

  • String d = “str”;
  • User e = new User();
  • int [] arr = null;

此时在变量中存放的是一个内存地址。

变量的定义方式为:

  • 类型名 变量名;
  • 类型名 变量名1,变量名2,变量名3, … ;
public class Main {
    public static void main(String[] args) {
        int a;
        double b;
        float c,d;
        boolean e;
        String f;
        int[] g = new int[10];
    }
}

2.2 变量属性

Java 变量有四个属性,分别是变量名称、变量类型、变量当前值和变量地址。

  1. 变量名称:程序中用来标识此变量的名称。
  2. 变量类型:定义此变量时指定的类型。
  3. 变量当前值:在任何时刻次变量存储的具体的值。
  4. 变量地址:变量在内存中的开始地址。

变量类型的存在有两个作用,已是指明此变量在内存中所占的字节数;再是可以限制此变量可以参与的运算。

变量当前值可以存放实际的值,也可以存放引用变量的内存地址,可以是对象的开始地址或数组的开始地址。


三、变量的作用域

变量的作用域指的是它的存在范围,只有在这个范围内使用它才是有效的。

其次,作用域决定了变量的生命周期。

变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁、清除内存空间的过程。

当一个变量被定义时,它的作用域就被确定了,分为以下几种类型。

  1. 成员变量:可细分为类层次成员变量、对象层次成员变量。类层次成员变量由 static 关键词修饰,被所有对象共享,直到类被卸载才消失;对象层次成员变量在对象毁灭时即消失。
  2. 局部变量:在方法内部或一个代码块内部定义,也是最常用的变量,只有在此方法内部或此代码块内部才有效。
  3. 方法参数:局部变量的一个分支,方法执行时存在,方法执行完毕后消失。
  4. 异常处理参数:也是局部变量的一个分支,只在对应的异常语句块中有效。

参考代码如下所示:

public class Main {
    private static final int MAX_SIZE = 10;
    public static void main(String[] args) {
        int a;
    }
    public static int add(int x,int y) {
        try {
            return x + y;
        } catch (Exception e) {
            System.out.println("异常了!");
            return 0;
        }
    }
}

图解说明如下图所示:


四、课时小结

在本节课时中,讲解了 Java 中常量的定义,涉及到字面量和 Final 关键字修饰,接着学习变量的使用和作用域范围。在下节课时中将讲解 Java 的运算符、表达式和语句。

相关文章
|
13天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
1月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
2月前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
42 2
|
21天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
29天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
安全 Java
java BigDecimal 的赋值一个常量
在 Java 中,`BigDecimal` 是一个用于精确计算的类,特别适合处理需要高精度和小数点运算的场景。如果你需要给 `BigDecimal` 赋值一个常量,可以使用其静态方法 `valueOf` 或者直接通过字符串构造函数。 以下是几种常见的方法来给 `BigDecimal` 赋值一个常量: ### 使用 `BigDecimal.valueOf` 这是推荐的方式,因为它可以避免潜在的精度问题。 ```java import java.math.BigDecimal; public class BigDecimalExample { public static void
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
77 4
|
1月前
|
Java
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
本文探讨了在Java中,当父类的方法返回`this`对象或变量时,子类调用该方法的行为,以及`this`关键字在不同类中调用方法时的指向问题。
16 0
java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
81 5
|
3月前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(下)
02 Java基础语法(变量+数据类型+运算符)
29 5
下一篇
无影云桌面