Java 作为一门强类型编程语言,其变量、常量的定义规则和运算符的使用方式是每个开发者必须掌握的基础。本文将从变量声明到运算符优先级,全方位解析这些核心概念,帮助你夯实 Java 基础。
变量:程序的基本存储单元
在 Java 中,每个变量都必须有明确的类型,声明时类型需放在变量名之前。这是 Java 强类型特性的直接体现。
变量声明的基本形式
常见的变量声明示例:
double salary; // 浮点型变量,用于存储薪资等带小数的值
int vacationDays; // 整型变量,存储整数
long earthPopulation; // 长整型,存储较大的整数
boolean done; // 布尔型,存储true或false
每个声明语句必须以分号结束,这是 Java 语法的基本要求。
变量命名规则
Java 对变量名有严格规定:
- 必须以字母开头,后续可跟字母或数字
- "字母" 范围广泛,包括 Unicode 字符(如德语、希腊语字母)
- "数字" 同样支持 Unicode 字符
- 不允许包含空格和特殊符号(如 ©、$ 不建议使用)
- 大小写敏感(hireday 和 hireDay 是两个不同变量)
- 长度基本无限制
- 不能使用 Java 保留字
提示:可通过
Character类的isJavaIdentifierStart和isJavaIdentifierPart方法检查字符是否符合命名规范
虽然可以在一行声明多个变量(如 int i, j;),但更推荐逐一声明,以提高代码可读性。良好的编程习惯是将变量声明放在第一次使用的位置附近。
变量初始化
Java 要求变量必须显式初始化后才能使用,未初始化的变量会导致编译错误。初始化方式有两种:
// 先声明后初始化
int vacationDays;
vacationDays = 12;
// 声明时直接初始化
int vacationDays = 12;
常量:不可改变的值
在 Java 中,使用 final 关键字定义常量,一旦赋值后就不能再修改。
常量声明方式
final double CM_PER_INCH = 2.54; // 1英寸=2.54厘米
常量命名习惯上使用全大写字母,多个单词之间用下划线分隔。
类常量
如果需要在类的多个方法中共享常量,可以定义为类常量,使用 static final 修饰:
public class Constants {
public static final double CM_PER_INCH = 2.54; // 类常量
public static void main(String[] args) {
double paperWidth = 8.5;
System.out.println(paperWidth * CM_PER_INCH);
}
}
类常量定义在方法外部,可被同一类的所有方法访问;若声明为 public,则其他类也可通过 类名.常量名 的方式使用。
运算符:程序的计算引擎
Java 提供了丰富的运算符,可分为算术运算符、关系运算符、位运算符等多个类别。
算术运算符
基础算术运算符包括 +、-、*、/、%(取余):
- 整数除法会自动截断小数部分(15/2=7)
- 浮点除法会保留小数(15.0/2=7.5)
- 取余运算结果的符号与被除数一致
注意:整数除以 0 会抛出异常,浮点数除以 0 会得到无穷大或 NaN
数学函数与常量
Java 的 Math 类提供了丰富的数学函数:
- 平方根:
Math.sqrt(x) - 幂运算:
Math.pow(x, a)(x 的 a 次方) - 三角函数:
Math.sin()、Math.cos()等 - 取整:
Math.round(x)(四舍五入)
常用数学常量:
Math.PI:圆周率 π 的近似值Math.E:自然常数 e 的近似值
通过静态导入可以简化使用:
import static java.lang.Math.*;
// 可直接使用 sqrt(PI) 代替 Math.sqrt(Math.PI)
数值类型转换
Java 中数值类型转换分为自动转换和强制转换两种:
-
自动转换(无信息丢失):
- 小范围类型向大范围类型转换(如
byte→short→int→long→float→double) - 运算时的自动提升(如
int与double运算时,int自动转为double)
- 小范围类型向大范围类型转换(如
-
强制转换(可能丢失精度):
double x = 9.997; int nx = (int) x; // 结果为9,截断小数部分警告:强制转换超出目标类型范围时,会产生不可预期的结果(如
(byte) 300结果为 44)赋值运算符的扩展形式
Java 支持结合运算符的赋值简写形式:
x += 4; // 等价于 x = x + 4 x *= 2; // 等价于 x = x * 2这种形式会自动进行类型转换,例如:
int x = 5; x += 3.5; // 等价于 x = (int)(x + 3.5),结果为8自增与自减运算符
++和--运算符用于变量的加 1 和减 1 操作,有前缀和后缀两种形式:
-
前缀形式:
++n(先加 1,后使用) -
后缀形式:
n++(先使用,后加 1)
示例:
int m = 7, n = 7;
int a = 2 * ++m; // a=16,m=8(先加后乘)
int b = 2 * n++; // b=14,n=8(先乘后加)
关系与逻辑运算符
- 相等性判断:
==(等于)、!=(不等于) - 比较运算符:
<、>、<=、>= - 逻辑运算符:
&&(与)、||(或)、!(非)
&& 和 || 采用短路求值策略:
x != 0 && 1/x > y // 如果x=0,后半部分不会执行,避免除0错误
三元运算符 condition ? exp1 : exp2 可简化条件判断:
int min = x < y ? x : y; // 获取x和y中的较小值
位运算符
位运算符直接操作整数的二进制位:
&:按位与|:按位或^:按位异或~:按位非<<:左移>>:右移(符号位填充)>>>:右移(0 填充)
示例:获取整数从右数第 4 位的值
int fourthBitFromRight = (n & 0b1000) / 0b1000;
运算符优先级
Java 运算符遵循特定的优先级规则,同一优先级从左到右计算(右结合运算符除外)。常见优先级从高到低:
- 括号
() - 一元运算符(
!、++、--等) - 算术运算符(
*、/、%高于+、-) - 关系运算符(
<、>、<=、>=高于==、!=) - 逻辑运算符(
&高于^高于|,&&高于||) - 三元运算符
?: - 赋值运算符(
=、+=、-=等)
枚举类型:限定取值范围
当变量的取值范围有限时,可使用枚举类型:
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE }
// 使用枚举类型
Size s = Size.MEDIUM;
枚举类型的变量只能存储该类型声明的枚举值或 null,有效避免了错误值的出现。
总结
变量、常量和运算符是 Java 程序的基本构建块。掌握这些概念不仅能写出正确的代码,更能编写高效、易读的优质代码。理解类型转换规则可避免隐蔽的 bugs,合理使用枚举类型能提高代码的健壮性,而熟练的运算符运用则能简化逻辑实现。
这些基础知识看似简单,却是深入学习面向对象编程、集合框架等高级特性的基础。建议多写多练,在实践中加深理解。
2964

被折叠的 条评论
为什么被折叠?



