【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 的运算符、表达式和语句。

相关文章
|
2天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
7 0
|
2天前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
6 0
|
2天前
|
存储 Java 定位技术
轻松理解Java中的数据类型和变量
轻松理解Java中的数据类型和变量
6 0
|
7天前
|
存储 Java
一文搞懂Java中所有变量概念!
一文搞懂Java中所有变量概念!
17 2
一文搞懂Java中所有变量概念!
|
13天前
|
Java
【Java探索之旅】数据类型与变量 字面常量 整型变量
【Java探索之旅】数据类型与变量 字面常量 整型变量
23 0
|
13天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
20 0
|
13天前
|
Java 开发者
Java变量命名规则
Java变量命名规则
19 0
|
18天前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
18天前
|
存储 Java 程序员
JavaSE&Java的异常
JavaSE&Java的异常
26 0