Java的常量与变量
1.什么是常量
常量是指在整个程序运行过程中值保持不变的量。这里的常量与常量值的含义不同。常量值是常量更为具体和直观的表现形式。例如:PI = 3.1415926...
,因为圆周率是一个固定不变的值,所以PI可以称之为常量,它在程序运行的过程中不变。而诸如3.14、5、“hello”,这些都可以成为常量值,即一个具体的数据。
常量值
常量值又成为字面量,它是通过数据直接表示的。常量值的类型包括:
- 整型常量值
整型(int)常量默认在内存中占 32 位,是具有整数类型的值,当运算过程中所需值超过 32 位长度时,可以把它表示为长整型(long)数值,它在内存中占 64 位。长整型类型则要在数字后面加 L 或 l(建议使用大写L,容易区分), 如 98L,表示一个长整型数。
public class ConstValue {
public static void main(String[] args) {
// 整型常量值
// 十进制整型常量值
int decimalNumber1 = 10;
int decimalNumber2 = -100;
int decimalNumber3 = 0;
byte decimalNumber4 = 2;
short decimalNumber5 = -2;
long decimalNumber6 = 1000000L; // Java中整型常量默认情况下是int类型,所以long类型常量值后面加上L。
// 八进制整型常量值
// Java 中的八进制常数的表示以 0 开头,如 0125 表示十进制数 85,-010 表示十进制数 -8。
int octal1 = 0125;
int octal2 = -010;
System.out.println(octal1); // 输出为85
System.out.println(octal2); // 输出为-8
// 十六进制进制整型常量值
// Java 中的八进制常数的表示以 0x 开头,如 0xa16 表示十进制数 2582。
int hexadecimal = 0xa16;
System.out.println(hexadecimal); // 输出为2582
}
}
- 浮点型常量值
Java 浮点型常量默认是double类型(双精度)的值,在内存中占 64 位(占8个字节)。如果考虑到需要节省运行时的系统资源,而运算时的数据值取值范围并不大且运算精度要求不太高的情况,可以把它表示为float类型(单精度,占4个字节,即在内存中占32位)的数值。
单精度型数值一般要在该常数后面加 F 或 f,如 16.8f,表示一个 float 类型值。double类型数值可以在常量值后面加D或d表示,如16.88D。
public class FloatingPointTypeValue {
public static void main(String[] args) {
// float类型常量值
float floatValue = 3.8F;
// double类型常量值
double doubleValue = 3.14D;
System.out.println(floatValue); // 输出为3.8
System.out.println(doubleValue); // 输出为3.14
}
}
- 布尔型常量值
Java 的布尔型常量只有两个值,即 false(假)和 true(真)。
public class BooleanValue {
public static void main(String[] args) {
boolean bValue1 = true; // 输出为true
boolean bValue2 = false; // 输出为false
}
}
- 字符型和字符串型常量值
Java 的字符型常量值是用单引号引起来的一个字符,如 ‘a’、A’。
注意:Java 字符串常量值中的单引号和双引号不可混用。双引号用来表示字符串,像 “8”、“q” 等都是表示单个字符的字符串。这里表示字符和字符串的单引号和双引号都必须是英语输入环境下输入的符号。
除此之外,Java 还允许使用一种特殊形式的字符常量值来表示一些难以用一般字符表示的字符,称为转义字符使用“\”开头。Java中常用的转义字符如下:
转义字符 | 说明 |
---|---|
\ddd | 1~3 位八进制数所表示的字符 |
\uxxxx | 1~4 位十六进制数所表示的字符 |
\’ | 单引号字符 |
\" | 双引号字符 |
\\ | 双斜杠字符 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\t | 制表符,横向跳格 |
public class CharacterValue {
public static void main(String[] args) {
char charValue = 'a';
char charValue2 = '\\';
System.out.println(charValue);
System.out.println(charValue2); // 输出“\”
}
}
public class StringValue {
public static void main(String[] args) {
String strValue = "Leung";
System.out.println(strValue);
}
}
常量的定义与使用
常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。常量需要初始化,即在声明常量的同时要赋予一个初始值。常量一旦初始化就不可以被修改。
Java 语言使用 final 关键字来定义一个常量,其语法如下所示:
final dataType variableName = value;
final:定义常量的关键字,即最终的(不可修改的)。
dataType :指明常量的数据类型,如:int、double等。
variableName :变量的名称。
value:常量的初始值。常量被赋值后就不能被修改了。
常量的三种类型:静态常量、成员常量和局部常量。如下代码所示:
public class MyConstDemo {
// 定义静态常量
// public static 修饰的常量作用域是全局的,不需要创建对象就可以访问它,在类外部访问形式为 MyConstDemo(类名). PI(常量名)。
public static final double PI = 3.1415926;
// 定义一个成员常量
public final int MY_VALUE= 10;
public static void main(String[] args) {
// 定义一个局部常量
final int MAX = 3;
}
}
小结
定义常量时,需要注意:
- 在定义常量时,需要对该常量进行初始化。
- final 关键字可以用来修饰基本数据类型(常量),也可以用来修饰对象的引用或者方法。
- 为了与变量区别,常量名称定义时全为大写。
2.什么是变量
是指可以改变的值。JAVA中我们通过三个元素来描述变量:变量类型,变量名以及变量值。
public class MyVariableValue {
public static void main(String[] args) {
String str = "I need a girlfriend";
System.out.println(str); // 输出I need a girlfriend
str = "java is my girlfriend";
System.out.println(str); // 输出java is my girlfriend
}
}
上述代码中,因为String具有不可变性,重新赋值后会生成新的String对象,str变量实际是指向对象地址的引用,"I need a girlfriend"为具体的值。变量重新赋值,重新指向了一个新的对象,对象值为"java is my girlfriend“。