一、标识符
1、概念
- Java所有的组成都需要名字,如类名、变量名和方法名,所有这些名称所使用的字符串序列即被称为标识符。
2、标识符的规则
2.1、基本规则
- 所有的标识符都应以 字母(A ~ Z 或 者a ~ z) 、美元符($)或者下划线(_)开始;
- 首字符之后可以是字母、美元符,下划线或者数字;
- 关键字不能 作为标识符;
- 标识符是 大小写敏感 的。
2.2、常见的约定
- 见名知意:标识符要符合语义信息;
- 包名所有字母小写;
- 类名每个单词首字母大写,其他小写;
- 变量和方法名的第一个单词小写,从第二个单词开始首字母大写;
- 类名和变量名通常为名词或名词性短语,方法名通常为动词或动宾短语;
- 常量的所有字母大写,单词之间用下划线连接。
2.3、Java中关键字汇总
关键字 | 说明 |
---|---|
abstract | 抽象方法、抽象类的关键词 |
assert | 断言条件是否满足 |
boolean | 布尔数据类型 |
break | 跳出循环或者label代码段 |
byte | 8-bit有符号数据类型 |
case | switch语句的一个条件 |
catch | 和try搭配捕获异常信息 |
char | 16-bit Unicode字符数据类型 |
class | 定义类 |
const | 未使用 |
continue | 不执行循环体剩余部分,即跳出此次循环 |
default | switch语句默认分支 |
do | 循环语句,循环体至少会执行一次 |
double | 64-bit双精度浮点数 |
else | if语句条件不成立时执行的分支 |
enum | 枚举类型 |
extends | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了,表示方法不能被重写,一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的完整性和健壮性,无论有没有异常发生都执行此代码 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类 实现了某接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
long | 64-bit整形 |
native | 表示方法实现用非Java代码 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有的字段、方法等,只能从类内部访问 |
protected | 表示类只能通过所有子类访问和同包中的所有类访问 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16-bit整形数字 |
static | 表示在类级别定义,所有实现共享的 |
strictfp | 浮点数使用比较严格的规则 |
super | 表示基类 |
switch | 表示选择语句 |
synchronized | 表示同一时间只能由一个线程访问代码块 |
this | 表示使用当前实例,或者调用另一个构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不反回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
二、基本数据类型
1、基本数据类型的概念
数据是描述客观事物的数字、字母以及能输入到计算机中的符号。在Java中数据类型分为两大类:基本数据类型 和 引用数据类型 。
2、基本数据类型
Java提供的基本数据类型包括八种,分别是: byte、short、int、long、float、double、char、boolean ,如下:
- 具体说明如下:
数据类型 | 占用空间 | 保存范围 |
---|---|---|
byte | 1字节,8bit | -128(-2^7) ~ 127(2^7 - 1) |
short | 2字节, 16bit | -32768(-2^15) ~ 32767(2^15 - 1) |
int | 4字节, 32bit | -2147483648(-2^31) ~ 2147483647(2^31 - 1) |
long | 8字节, 64bit | -9223372036854775808(-2^63) ~ 9223372036854775807(2^63 -1) |
float | 4字节, 32bit | -3.403e38 ~ 3.403e38 |
double | 8字节, 64bit | -1.798e308 ~ 1.798e308 |
char | 2字节, 16bit | 0 ~ 65535 |
boolean | 1字节, 8bit | true或false |
3、引用数据类型
Java中除了8中基本数据类型,其他的数据类型都是引用数据类型,包括数组、类、接口等。
三、字面量
字面量即是我们所能看到的正是具体的字面值。如:
- 整形字面量:10、 123、 2548875585447555L、0144、0x64;
- 浮点型字面量:3.14F、 6.28;
- 布尔型字面量:true、false;
- 字符型字面量:‘a’ 、 ‘A’ 、 ‘/u6C49’;
- 字符串型字面量:“zhenghuhu”;
- Null型字面量:值为null,代表什么都没有;
注意:
- 长整型(long) 的字面量后边必须有字母 l 或 L ,为了和数字1区分,一般用 L;
- ==单精度浮点型(float)==的字面量后面必须有字母 f 或 F,一般使用大写字母 F;
- ==字符型(char)==型字面量必须使用单引号;
- 字符串型 字面量必须使用双引号。
四、变量
1、概念
- 变量指的是在程序运行过程中其值可以改变的量。
- 变量就是计算机内存中存放数据的单元, 定义变量的本质就是分派内存, 当把数值赋值给变量时,实际上就是将数值存储到变量代表的内存单元中。
2、Java中的变量
-
声明变量的并初始化的基本语法为:
[修饰符] 数据类型 变量名称 [= 值], [,变量名称 [= 值] ...];
-
说明:
- 变量必须 先声明, 然后初始化,最后才能使用。变量只在申明他的{}内有效;
- 初始化byte、short、int、long类型的变量时,均可以用十进制、八进制和十六进制的数字,八进制前缀 0 ,十六进制前缀 0x;
- char类型是一个单一的16位Unicode字符,可以保存一个字母和汉字等,最小值是\u0000(对应十进制0),最大是\uffff(对应的十进制是65535);初始化char类型变量时,可以直接使用具体的字符,另外,也支持一些特殊的字符序列。
五、常量
- 常量是不可改变的变量,通常以final修饰。
- 基本类型中数值类型的取值范围都已经以常量的形式定义在对应的包装类中了。
六、表达式和运算符
1、表达式
- 对数据进行 加工 和 处理 称 为运算;
- 表示各种运算的符号 称为 运算符;
- 参与运算的数字 称为 操作数;
- 表达式操作数和运算符的有效组合,操作数可以是变量、常量、方法调用的返回值等。
2、运算符
- 表示各种运算的符号称为运算符,Java中运算符大致分为:
- 赋值运算符;
- 算数运算符;
- 关系运算符;
- 逻辑运算符;
- 位运算符;
- 复合赋值运算符等。
2.1、赋值运算符
- 赋值运算符的作用就是为变量进行赋值。
2.2、算术运算符
-
算术运算符用来完成数学上的 ==加、减、乘、除四则运算;
运算符 实例 说明 + 1 + 2 求和 - 2 - 1 求差 * 1 * 2 乘积 / 3 / 2 求商 % 3 % 2 取余 ++ 1++ 或 ++1 自增 – 1-- 或 --1 自减 -
说明:
- 两个整形的操作数进行除法运算,结果也会是整数,小数部分会丢失;
- 自增运算符 ++ 和自减运算符 ==- -==出现在操作数前面或者后面时会有所不同;
- 表达式num++ 和 ++num 都会使num的值加上1 ,区别在于 num++的返回值是num(num先返回再自增) ,而表达式 ++num的返回值是num+1(num的值先自增再返回);
- 表达式num– 和 - -num 都会使num的值减上1 ,区别在于 num- -的返回值是num(num先返回再自减) ,而表达式 - -num的返回值是num-1(num的值先自减再返回);
2.3、关系运算符
- 关系运算符用于操作数之间的比较。
运算符 示例 说明 > num1 > num2 如果 num1 > num2 成立,结果true,否则结果为false; >= num1 >= num2 如果 num1 >= num2 成立,结果true,否则结果为false; < num1 < num2 如果 num1 < num2 成立,结果true,否则结果为false; <= num1 <= num2 如果 num1 <= num2 成立,结果true,否则结果为false; == num1 == num2 如果 num1 == num2 成立,结果true,否则结果为false; != num1 != num2 如果 num1 != num2 成立,结果true,否则结果为false;
2.4、逻辑运算符
-
逻辑运算符是对布尔类型的操作数进行与、或、非的运算;
运算符 示例 说明 && true && false 两个操作数都为true,结果为true,否则结果为false ll true ll false 两个操作数中有一个为true,结果为true,否则结果为false ! !(false) 操作数为false,结果为true否则结果为false -
注意:逻辑运算符会出现 短路 的情况,即当使用&&运算符,第一个操作数为false时不在判断第二个操作数;当使用 | | 运算符时,第一个操作数为true时,不在判断第二个操作数。
2.5、位运算符
位运算符是对整数类型的操作数进行的二进制运算,总共有七个,如下所示:
运算符 | 说明 |
---|---|
&(位与) | 如果相对应位都是1,则结果为1,否则为0 |
l(位或) | 如果相对应位都是0,则结果为0,否则为1 |
^(位异或) | 如果相对应位值相同,则结果为0,否则为1 |
~(位反) | 反转操作数的每一位,即1变0,0变1 |
<<(左位移) | 按位左移右操作数指的位数 |
>>(右位移) | 按位右移右操作数指定的位数 |
>>>(无符号右位移) | 左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 |
2.6复合赋值运算符
-
复合赋值运算符是将算术运算符和赋值运算同时进行的计算,如下:(num初始值为10)
表达式 等价的Java代码 运行结果 num += 3 num = num + 3 13 num -= 3 num = num - 3 7 num *= 3 num = num * 3 30 num /= 3 num = num / 3 3 num %= 3 num = num % 3 1
2.7、条件运算符(三元运算符)
-
条件运算符也被称为 三元运算符 。该运算符有三个操作数,并且需要判断布尔表达式的值,该运算符的主要作用是决定那个值应该赋值给那个变量。
-
语法格式如下:
[数据类型 变量名称 = ](布尔表达式)? 值 if true :值 if true
-
说明:布尔表达式的值为true,将冒号前面的值赋值给变量,反之将冒号后面的值赋值给变量。
3、 运算符的优先级
运算符 | 优先级 | 结合性 |
---|---|---|
()、[]、.(点操作符) | 1 | 从左向右 |
+(一元运算)、-(一元运算)、++、–、!、~ | 2 | 从右向左 |
*、/、% | 3 | 从左向右 |
+、- | 4 | 从左向右 |
>>、>>>、<< | 5 | 从左向右 |
>、>=、<、<= | 6 | 从左向右 |
==、!= | 7 | 从左向右 |
& | 8 | |
l | 9 | |
^ | 10 | |
&& | 11 | |
ll | 12 | |
? : | 13 | 从右向左 |
=、+=、-=、*=、/=、%= | 14 | 从右向左 |
七、数据类型的转换
Java中,整形、常量、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换顺序从低级到高级。如下:
低 ------------------------------------------------------> 高
byte,short,char ----> int ----> long ----> float ----> double
需要注意:
- 不能对boolean类型的进行转换;
- 转换过程可能会导致溢出或损失精度;
- 浮点数到整数的转换是通过舍弃小数得到的。
1、自动类型的转换
-
当低级别的赋值给高级别的变量时,系统会自动完成数据类型的转换
public class Test { public static void main(String[] args) { long num1 = 333333333; // 末尾没有字母l或L的整型字面量,通常会被当作int类型,赋值给long型的变量时,会进行自动数据类型转换 double num2 = 12.34F; // 12.34F是一个float型的浮点数,赋值给double型的变量时,会进行自动数据类型转换 int num3 = 52; float num4; num4 = num3; // 将int类型的变量num3的值赋值给float类型的变量num4,会进行自动数据类型转换 } }
强制类型转换
-
当将高级别的值赋值给低级别的变量时,需要进行强制类型转换。
-
语法格式如下:
(数据类型) 期待转换的值
-
示例
public class Test { public static void main(String[] args) { int num1 = 5; float num2 = 6f; double num3 = 7.8; double result = num1 + num2 + num3; System.out.println("result = " + result); } }
-
注意:
- 字符串String与其他数据类型进行 + 运算时,都会将其他数据类型先转换为String,然后两个字符串进行拼接。
- byte类型的变量值之间、short类型的变量值之间、或者byte类型的变量值和short类型的变量值,他们在进行运算时,结果为int类型。