1、关键字
- 定义:被Java语言赋予了特殊的含义,用做专门用途的字符串(或者单词)
- 特点:关键字都是小写
- 注意:true , false , null是字面量,表示特殊的布尔值和空值
2、标识符
- 凡是自己可以取名的都是标识符
- 标识符的命名规则
1)由26个英文字母大小写,0-9,_ 或 $ 组成
2)数字不可以开头
3)不可以使用关键字和保留字,但是可以包含关键字和保留字
4)Java中严格区分大小写,长度无限制
5)标识符不能包含空格
- 标识符的命名规范
1)包名:多单词组成时所有字母都小写
2)类名、接口名:多单词组成时,所有单词的首字母大写
3)变量名、方法名:多单词组成时,第一个单词小写,第二个单词开始每个单词首字母大写
4)常量名:所有字母都大写。多单词时每个单词用下划线连接
3、变量
3.1变量的定义
- 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
- 变量的构成包含三个要素:数据类型、变量名、存储的值
- Java中变量声明的格式:
数据类型 变量名 = 变量值
- java中的变量按照数据类型来分类
(1)基本数据类型(8种):
整型:byte \ short \ int \ long
浮点型:float \ double
字符型:char
布尔型:boolean
(2)引用数据类型:
类(class)
数组(array)
接口(interface)
枚举(enum)
注解(annotation)
记录(record)
- 定义变量时,变量名要遵循标识符命名的规则和规范
- 说明:
(1)变量都有其作用域,变量只在作用域内是有效的,出了作用域就失效了
(2)在同一个作用域内,不能声明两个同名的变量
(3)定义好变量名之后,可以通过变量名的方式对变量进行调用和运算
(4)变量值在赋值时,必须满足变量的数据类型,并且在数据类型有效的范围内变化
4、基本数据类型
4.1 整数类型
byte、short、int、long
注:
(1)定义long类型的变量,赋值时需要以“ l ”或“L”作为后缀
(2)Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
(3)Java的整型常量默认为int型
4.2 浮点类型
float、double
注:
(1)定义float类型的变量,赋值时需要以“ f ”或“ F”作为后缀
(2)Java的浮点型常量默认为double型
4.3 字符类型
char
字符型变量的三种表现形式:
(1)使用单引号 ' '表示单个字符
(2)直接使用Unicode的值来表示字符型常量
(3)使用转义字符'\'将其后的字符转变为特殊字符型常量
4.4 布尔类型
boolean
- boolean类型用来判断逻辑条件,一般用于流程控制语句中
- boolean类型数据只有两个值:true、false。不可以用0或非0的整数代替false和true
5、基本数据类型变量间运算规则
自动类型提升
强制类型转换
5.1 自动类型提升
将取值范围小的类型自动提升为取值范围大的类型
(1)存储范围小的值赋值给存储范围大的变量
int i = 'M';//char自动升级为int
double d = 10;//int自动升级为double
long num = 1234567;//int自动提升为long,但是右边的数值必须在int范围内,否则编译不通过
(2)进行混合运算时,会按照其中最大的类型运算
int i = 13;
byte b = 14;
double d = 13.14;
double sum = i + b + d;
(3)byte、short、char数据类型的变量进行算数运算时,按照int类型处理
byte b1 = 13;
byte b2 = 14;
short s1 = 13;
short s2 = 14;
char c1 = 'N';
char c2 = 'B';
int i1 = b1 + b2;
int i2 = s1 + s2;
int i3 = c1 + c2;
int i4 = b1 + s1 +c1;
5.2 强制类型转换
将存储范围大的值强制转换成取值范围小的类型
转换格式:
数据类型1 变量名 = (数据类型1)被强转数据值
注:()中的数据类型必须<=变量值的数据类型
(1)把存储范围大的值强制转换成存储范围小的变量时,可能会损失精度或溢出
int i = (int)1.2345;//损失精度
byte b = (byte)129;//溢出
(2)某个值想要提升数据类型时,也可以使用强制类型转换(无风险)
int i = 6;
int j = 4;
double bigger = (double)i/j;
(3)声明long变量时,可以出现省略后缀的情况。float则不可以。
5.3 基本数据类型与String的运算
5.3.1 字符串类型
- String属于引用数据类型
- 使用一对 “” 来表示一个字符串,内部可以包含0个、1个或者多个字符
- 声明方式与基本数据类型类似
5.3.2 运算规则
(1)任意八种基本数据类型的数据与String类型只能进行连接运算,且结果也一定是String类型
int i1 = 6;
boolean b1 = false;
String s1 = "BEAST";
String s2 = s1 + b1 + i1;
(2)String类型不能通过强转类型 ( ) 强转,只能够借助包装类的方法才能转
6、运算符(Operator)
运算符是一种特殊的符号,表示数据的运算、赋值和比较等
- 按照功能分类
分类 | 运算符 |
---|---|
算术运算符(7个) | +、-、*、/、%、++、– |
赋值运算符(12个) | =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等 |
比较(或关系)运算符(6个) | >、>=、<、<=、==、!= |
逻辑运算符(6个) | &、|、^、!、&&、|| |
位运算符(7个) | &、|、^、~、<<、>>、>>> |
条件运算符(1个) | (条件表达式)?结果1:结果2 |
Lambda运算符(1个) | -> |
- 按照操作个数分类
分类 | 运算符 |
---|---|
一元运算符(单目运算符) | 正号(+)、负号(-)、++、–、!、~ |
二元运算符(双目运算符) | 除了一元和三元运算符剩下的都是二元运算符 |
三元运算符 (三目运算符) | (条件表达式)?结果1:结果2 |
6.1 算术运算符
6.1.1 基本语法
自加自减运算
注:++运算与 --运算用法一致
(1)单独使用时,(前)自++和(后)++没有区别
int a = 5;
++a;
int b = 5;
b++;
(2)复合使用时
- 和其他变量放在一起使用或者和输出语句放在一起使用,前++和后++就产生不同
- 变量前++:变量先自增1,然后再运算
- 变量后++:变量先运算,然后再自增1
int i1 = 78;
int i2 = 78;
System.out.println("i1++的值为:" + i1++);
System.out.println("++i2的值为:" + ++i2);
(3)自增自减运算 不会改变数据类型
short s1 = 65;
short s2 = 65;
s1++;
++s2;
6.2 赋值运算符
值运算符 | 符号解释 | |
---|---|---|
= | 当两侧数据不一样时可以可使用数据类型转换处理;支持连续赋值 | |
+= | 将符号左边的值 和右边的值 进行相加 操作,最后将结果赋值给左边的变量 | |
-= | 将符号左边的值 和右边的值 进行相减 操作,最后将结果赋值给左边的变量 | |
*= | 将符号左边的值 和右边的值 进行相乘 操作,最后将结果赋值给左边的变量 | |
/= | 将符号左边的值 和右边的值 进行相除 操作,最后将结果赋值给左边的变量 | |
%= | 将符号左边的值 和右边的值 进行取余 操作,最后将结果赋值给左边的变量 |
short s = 10;
int i1,i2,i3,i4,i5,i6;
i1 = s;
i2 = i3 = i4 = i5 = i6 = i1;
i2 += 10;
i3 -= 10;
i4 *= 10;
i5 /= 10;
i6 %= 10;
注:
+=、-=、*=、/=、%= 不改变变量本身数据类型
6.3 比较(关系)运算符
- 比较运算符的结果都是boolean型
- == 、!= :适用于基本数据类型和引用数据类型
> 、< 、>=、<= :只适用于基本数据类型
- 比较运算符 == 不能够写成 =
int i = 6;
short s = 6;
boolean b = i == s;
6.4 逻辑运算符
- &、|、^ 、!、&&、||
- 逻辑运算符的操作都是boolean类型的变量或常量,运算的结果也是Boolean类型的值
- & 和 && 的区别
&:如果符号左边是false,则继续执行符号右边的操作
&&:如果符号左边是false,则不再执行符号右边的操作
- | 和 || 的区别
|:如果符号左边是true,则继续执行符号右边的操作
||:如果符号左边是true,则不再执行符号右边的操作
boolean b1 = true;
boolean b2 = false;
boolean b3 = b1 && b2;
boolean b4 = b1 || b2;
boolean b5 = !b1;
boolean b6 = b1 ^ b2;
boolean b1 = false;
int i1 = 100;
if(b1 & (i1++ > 0))//b2为false,继续执行后面的 i2++ > 0
{
System.out.println("小白狗");
}
else{
System.out.println("小黑狗");
}
System.out.println("i1 = " + i1);
boolean b2 = false;
int i2 = 100;
if(b2 && (i2++ > 0))//b2为false,不再执行后面的 i2++ > 0
{
System.out.println("小白狗");
}
else{
System.out.println("小黑狗");
}
System.out.println("i2 = " + i2);
6.5 位运算符
- << 左移,每向左移动一位,结果在原有基础上 *2 (对于正数、负数都适用)
>> 右移
>>> 无符号右移
- & 按位与
| 按位或
^ 按位异或
- ~ 按位取反(按2进制取反)
6.6 条件运算符
- 格式:(条件表达式)? 表达式1:表达式2
- 如果条件表达式的结果是true,则执行表达式1。否则执行表达式2
int num1 = 1;
int num2 = 5;
int num3 = (num1 > num2)? num1++:num2++;
System.out.println("输出结果为: " + num3);