数据类型与运算符
标识符的基本介绍
在 Java 中,标识符是用来给类、方法、变量、常量等元素命名的字符序列。理解标识符的规则和规范,是编写合法、可读 Java 代码的基础。
标识符的命名规则 (必须遵守)
下述规则由 Java 语言规范强制执行,若没有遵守则会导致编译报错的情况发生。
- 字符组成:只能由字母、数字、下划线、以及美元符号组成。
- 首字母:必须以字母、下划线或美元符号开头,错误示范:123abc。
- 大小写敏感:例如 demo01 和 Demo01 是不同的标识符。
- 不能使用关键字:如 class、public、static 等作为标识符。
标识符的命名规范(推荐遵守)
下述内容属于行业规范,不遵守并不会导致编译报错的情况出现,但是会大大影响我们代码的可读性。
- 类名与接口名:大驼峰式,每个单词的首字母都使用大写,如 StudentManager、HttpServlet、ArrayList 等。
- 方法名与变量:小驼峰式,首字母采用小写,后续单词的首字母大写,如 userName、maxValue 等。
- 常量:采用单词全字母大写 + 下划线的形式,如 MAX_SIZE。
- 包名:全字母小写,用点号分隔,如 com.company.project。
- 见名知意:使用有意义的单词作为变量名,例如 studentIndex 等。
数据类型
Java 是强类型语言,每个变量都必须声明其数据类型。
基本数据类型 (值直接储存在栈上)
- byte:字节型,取值范围 -128~127
- short:短整型,取值范围 -32768 ~ 32767
- int:整形
- long:长整型,一般用于接收一些非常大的数字
- float:单精度浮点型
- double:双精度浮点型
- char:字符型
- boolean:布尔型
引用数据类型 (储存对象的地址)
- 类(Class):如 String、Object、自定义类
- 接口(Interface)
- 数组(Array):如 int[]、String[]
- 枚举(Enum)
类型转换
- 自动类型转换 (隐式):低精度 ➡ 高精度
int a = 0;
double b = a;
System.out.println(b); // b == 1.0
- 强制类型转换 (显式):高精度 ➡ 低精度
double x = 3.1415926;
int y = (int) x;
System.out.println(y); // y == 3
两种类型转换的区别!!!
- 从代码层面上来看,自动类型转换不需要指定转换的类型,强制类型转换则需要指定转换的类型。
- 高精度转向低精度,可能会导致精度丢失的情况。
运算符
大部分内容都与数学中的运算规则相同。
1. 算术运算符
+ - *:+还具备拼接字符串的作用。/vs%:前者为除,后者为取余。- 当我们在使用
/进行整数相除时,若不能整除,结果并不会保留小数,而是会直接舍弃。 ++ --:自增或自减。- 注意:
++i先自增再使用,i++则是先使用再自增 (自减也是类同)。
int i = 10;
int a = i++; // a == 10, i == 11
int b = ++i; // i == 12, b == 12
2. 赋值运算符 (简单介绍)
| 运算符 | 等价于 |
|---|---|
= | a = b |
+= | a = a + b |
-= | a = a - b |
*= | a = a * b |
/= | a = a / b |
%= | a = a % b |
3. 关系运算符
| 运算符 | 注解 | 案例 |
|---|---|---|
== | 等于 | a == b |
!= | 不等于 | a != b |
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
注意:基本类型比较的是值,引用类型比较的是地址!
4. 逻辑运算符
| 运算符 | 说明 | 案例 | 特点 |
|---|---|---|---|
&& | 短路与 | a > 0 && b < 10 | 当第一个表达式 false 时不再计算第二个 |
& | 逻辑与(非短路) | a & b | 两个都计算 |
^ | 异或 | a ^ b | 不同为 true,相同为 false |
! | 非 | !(a > b) | 取反 |
5. 三元运算符
int max = (a > b) ? a : b; /* 如果 a 大于 b 则将 a 的值赋给 max,否则将 b 的值赋给 max */
注意:运算符的优先级
运算符的优先级较为复杂,为了避免记错了的可能,以及提高代码的可读性,我们可以使用 () 明确运算顺序。
int a = (x + y) / z;
总结要点
- 基本类型 vs 引用类型:内存存储方式不同,传递方式不同。
- 类型转换:自动转换安全,强制转换需谨慎。
- 运算符优先级:不确定时建议多使用括号,既避免了记忆出错的可能,同时也提高了代码的可读性。
- 整数除法:两个整数相除结果还是整数,会忽略小数。
==:==比较的是对象的内存地址,比较对象时应使用 equals() 方法而非==。

