Java中的常量和变量(非常详细)
在 Java 程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。
在 Java 语言中声明一个常量,除了要指定数据类型外,还需要通过 final 关键字进行限定。
声明常量的标准语法如下:
【实例】声明常量,实例代码如下:
在 Java 程序中,除了可以定义符号常量,还可以把字面量赋给任何内置类型的变量。例如如下代码:
byte、int、long 和 short 都可以用十进制、十六进制以及八进制的方式来表示。当使用字面量时,前缀 0 表示八进制,而前缀 0x 代表十六进制,例如如下代码:
和其他语言一样,Java 的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:
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 语言支持一些特殊的转义字符序列。常见的转移字符如下表所示:
符号 | 字符含义 | 符号 | 字符含义 |
---|---|---|---|
\n | 换行 | \t | 制表符 |
\r | 回车 | \" | 双引号 |
\f | 换页符 | \' | 单引号 |
\b | 退格 | \\ | 反斜杠 |
\0 | 空字符 | \ddd | 八进制字符(ddd) |
\s | 空格 | \uxxxx | 十六进制 Unicode 字符(xxxxx) |
Java变量
变量是 Java 程序的一个基本存储单元,由一个或多个连续的字节组成。变量都有名字,程序中通过变量名引用对应内存单元中的数据。在 Java 中,使用变量之前需要先声明变量。变量声明通常包括三部分,变量类型、变量名和初始值,其中变量的初始值是可选的。
声明变量的语法格式如下:
type identifier [= value][,identifier[=value]...];
- type 可以是 Java 语言的基本数据类型,或者类、接口等复杂类型的名称;
- 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() 方法。