一、Java 常量
在 Java 中,常量就是在程序执行过程中不会变化的量,有两种实现方式,分别为:
- 字面量:如
abc
、123
等。 - 通过
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 变量有四个属性,分别是变量名称、变量类型、变量当前值和变量地址。
- 变量名称:程序中用来标识此变量的名称。
- 变量类型:定义此变量时指定的类型。
- 变量当前值:在任何时刻次变量存储的具体的值。
- 变量地址:变量在内存中的开始地址。
变量类型的存在有两个作用,已是指明此变量在内存中所占的字节数;再是可以限制此变量可以参与的运算。
变量当前值可以存放实际的值,也可以存放引用变量的内存地址,可以是对象的开始地址或数组的开始地址。
三、变量的作用域
变量的作用域指的是它的存在范围,只有在这个范围内使用它才是有效的。
其次,作用域决定了变量的生命周期。
变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁、清除内存空间的过程。
当一个变量被定义时,它的作用域就被确定了,分为以下几种类型。
- 成员变量:可细分为类层次成员变量、对象层次成员变量。类层次成员变量由
static
关键词修饰,被所有对象共享,直到类被卸载才消失;对象层次成员变量在对象毁灭时即消失。 - 局部变量:在方法内部或一个代码块内部定义,也是最常用的变量,只有在此方法内部或此代码块内部才有效。
- 方法参数:局部变量的一个分支,方法执行时存在,方法执行完毕后消失。
- 异常处理参数:也是局部变量的一个分支,只在对应的异常语句块中有效。
参考代码如下所示:
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 的运算符、表达式和语句。