首页 > 编程笔记 > Java笔记 阅读:20

Java中的常量和变量(非常详细)

在 Java 程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。

Java常量

在程序运行过程中不能被改变的量称为常量(constant),通常也被称为“final 变量”。常量在整个程序中只能被赋值一次。

在 Java 语言中声明一个常量,除了要指定数据类型外,还需要通过 final 关键字进行限定。

声明常量的标准语法如下:
final datatype CONSTNAME=VALUE;
其中,final 是 Java 的关键字,表示定义的是常量,datatype 为数据类型,CONSTNAME 为常量的名称,VALUE 是常量的值。

【实例】声明常量,实例代码如下:
final double PI = 3.1415926;  // 声明 double 型常量 PI 并赋值
final boolean FLAG = true;    // 声明 boolean 型常量 FLAG 并赋值
注意,常量名通常使用大写字母,但这并不是必需的。只不过很多 Java 程序员已经习惯使用大写字母来表示常量。通过这种命名方法实现与变量的区别。

在 Java 程序中,除了可以定义符号常量,还可以把字面量赋给任何内置类型的变量。例如如下代码:
byte a = 68; // 为 byte 型变量 a 赋值整数常量 68
char a = 'A'; // 把字符常量 'A' 赋值给字符型变量 a

byte、int、long 和 short 都可以用十进制、十六进制以及八进制的方式来表示。当使用字面量时,前缀 0 表示八进制,而前缀 0x 代表十六进制,例如如下代码:
int decimal = 100;
int octal = 0144;
int hexa = 0x64;

和其他语言一样,Java 的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:
"Hello world"
"two\nlines"
"\" this is a quotes\""

Java 语言支持一些特殊的转义字符序列。常见的转移字符如下表所示:

表 1 常用的转义字符
符号 字符含义 符号 字符含义
\n 换行 \t 制表符
\r 回车 \" 双引号
\f 换页符 \' 单引号
\b 退格 \\ 反斜杠
\0 空字符 \ddd 八进制字符(ddd)
\s 空格 \uxxxx 十六进制 Unicode 字符(xxxxx)

Java变量

变量是 Java 程序的一个基本存储单元,由一个或多个连续的字节组成。变量都有名字,程序中通过变量名引用对应内存单元中的数据。

在 Java 中,使用变量之前需要先声明变量。变量声明通常包括三部分,变量类型、变量名和初始值,其中变量的初始值是可选的。

声明变量的语法格式如下:
type identifier [= value][,identifier[=value]...];

例如如下代码:
int age;                // 声明 int 型变量 age
double d1 = 12.27;      // 声明 double 型变量 d1 并赋值 12.27
int a, b, c;            // 声明三个整型变量 a, b, c
int d = 3, e = 4, f = 5; // 声明三个整型变量并赋初值

由于变量被定义后暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是说变量有它的生命周期。在变量的生命周期内其可以被访问的范围称为作用域,若超出该区域对变量进行访问则在编译时会出现错误。

根据作用域的不同,可将变量分为不同的类型:类成员变量、局部变量和方法参数变量。

1) 类成员变量

类成员变量声明在类中,但不属于任何一个方法,其作用域为整个类。
class ClassVar{
   int x = 45;
   int y ;
}
在上述代码中,定义的两个变量 x、y 均为类成员变量,其中第一个进行了初始化,而第二个没有进行初始化。

2) 局部变量

在类的成员方法中定义的变量(在方法内部定义的变量)称为局部变量。局部变量只在当前代码块中有效。

【实例】声明两个局部变量,实例代码如下:
class LocalVar {
    public static void main(String []args) {
        int x = 45;      // 局部变量,作用域为整个 main() 方法
        if(x > 5) {
            int y = 0;    // 局部变量,作用域为 if 语句块
            System.out.println(y);
        }
        System.out.println(x);
    }
}
在上述代码中,定义的两个变量 x、y 均为局部变量,其中 x 的作用域是整个 main() 方法,而 y 的作用域仅仅局限于 if 语句代码块。

3) 方法参数变量

声明为方法参数的变量的作用域是整个方法。

【实例】声明一个方法参数变量,实例代码如下:
class FunctionParaVar{
    public static int getSum(int x) {
        x = x + 1;
        return x;
    }
}
在上述代码中,定义了一个成员方法 getSum(),方法中包含一个 int 类型的方法参数变量 x,其作用域是整个 getSum() 方法。

相关文章