1.Java数据类型划分
2.基本数据类型
3.常用的转义字符
No. | 转义字符 | 描述 | No. | 转义字符 | 描述 |
1 | \f | 换页 | 2 | \\ | 反斜线 |
3 | \b | 倒退一格 | 4 | \' | 单引号 |
5 | \r | 归位 | 6 | \" | 双引号 |
7 | \t | 制表符Tab | 8 | \n | 换行 |
4.基本数据类型的默认值
编号 | 数据类型 | 默认值 |
1 | byte | (byte)0 |
2 | short | (short)0 |
3 | int | 0 |
4 | long | 0L |
5 | float | 0.0f |
6 | double | 0.0d |
7 | char | \u0000(空,'') |
8 | boolean | false |
6.数据类型的转换
(1)Java的数据类型在定义时就已经确定了,因此不能随意转换成其它的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种;
(2)在程序中已经定义好了数据类型的变量,若是想用另一种数据类型表示时,Java会在下列的条件皆成立时,自动做数据类型的转换:
1)转换前的数据类型与转换后的类型兼容。
2)转换后的数据类型的表示范围比转换前的类型大
7.运算符
(1) Java中的语句有很多种形式,表达式就是其中一种形式。表达式是由操作数与运算符所组成:操作数可以是常量、变量也可以是方法,而运算符就是数学中的运算符号,如“+”、“-”、“*”、“/”、“%”等。以下面的表达式(z+100)为例,“z”与“100”都是操作数,而“+”就是运算符。
(2)赋值运算符号
No. | 赋值运算符号 | 描述 |
1 | = | 赋值 |
(3)一元运算符
No. | 一元运算符 | 描述 |
1 | + | 正号 |
2 | – | 负号 |
3 | ! | NOT,否 |
(4)算术运算符
No. | 算术运算符 | 描述 |
1 | + | 加法 |
2 | – | 减法 |
3 | * | 乘法 |
4 | / | 除法 |
5 | % | 取模(取余数) |
(5)关系运算符
No. | 关系运算符 | 描述 |
1 | > | 大于 |
2 | < | 小于 |
3 | >= | 大于等于 |
4 | <= | 小于等于 |
5 | == | 等于 |
6 | != | 不等于 |
(6)递增与递减运算符
No. | 自增与自减运算符 | 描述 |
1 | ++ | 自增,变量值加1 |
2 | -- | 自减,变量值减1 |
(7)逻辑运算符
No. | 逻辑运算符 | 描述 |
1 | & | AND,与 |
2 | && | 短路与 |
3 | | | OR,或 |
4 | || | 短路或 |
(8)AND及 OR结果表
No. | 逻辑运算符 | 描述 |
1 | & | AND,与 |
2 | && | 短路与 |
3 | | | OR,或 |
4 | || | 短路或 |
(9)关于“&&”与“&”、“||”与“|”的说明
1)“&&”与“&”
&&表示短路与
对于“与”来说,要求所有的条件都判断,而如果使用“短路与”如果第一个条件为false,则后面的条件将不再判断。
2)“||”与“|”
||表示短路或
对于“或”来说,要求所有的条件都判断,而如果使用“短路或”如果第一个条件为true,则后面的条件将不再判断。
(10)括号运算符
No. | 括号运算符 | 描述 |
1 | () | 提高括号中表达式的优先级 |
(11)位运算符
No. | 逻辑运算符 | 描述 |
1 | & | 按位与 |
2 | | | 按位或 |
3 | ^ | 异或(相同为0,不同为1) |
4 | ~ | 取反 |
5 | << | 左移位 |
6 | >> | 右移位 |
7 | >>> | 无符号右移位 |
(12)位运算的结果表
No. | 二进制数1 | 二进制数1 | 与操作(&) | 或操作(|) | 异或操作(^) |
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 1 | 1 |
3 | 1 | 0 | 0 | 1 | 1 |
4 | 1 | 1 | 1 | 1 | 0 |
位运算
public class OperatorDemo15 {
public static void main(String[] args) {
int x = 3 ;
// 3的二进制数据:00000000 00000000 00000000 00000011
int y = 6 ;
// 6的二进制数据:00000000 00000000 00000000 00000110
System.out.println(x & y);
// 与操作的结果: 00000000 00000000 00000000 00000010
System.out.println(x | y);
// 或操作的结果: 00000000 00000000 00000000 00000111
System.out.println(x ^ y);
// 异或操作结果: 00000000 00000000 00000000 00000101
}
}
(13) 左移和右移
在Java中也提供了左移“<<”及右移“>>”两种操作。
1)左移操作是将运算数的二进制码整体左移指定位数,左移之后的空位使用0来填充
2) 右移操作“>>”是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是整数使用“0”填充,如果是负数使用“1”填充。
(14)无符号右移
以上的右移操作属于带符号位的右移操作,在Java中也提供了无符号的右移操作符“>>>”,使用此操作将以“0”填充空出来的位。
(15)运算符的优先级
优先级 | 运算符 | 类 | 结合性 |
1 | () | 括号运算符 | 由左至右 |
1 | [] | 方括号运算符 | 由左至右 |
2 | !、+(正号)、-(负号) | 一元运算符 | 由右至左 |
2 | ~ | 位逻辑运算符 | 由右至左 |
2 | ++、-- | 递增与递减运算符 | 由右至左 |
3 | *、/、% | 算术运算符 | 由左至右 |
4 | +、- | 算术运算符 | 由左至右 |
5 | <<、>> | 位左移、右移运算符 | 由左至右 |
6 | >、>=、<、<= | 关系运算符 | 由左至右 |
7 | ==、!= | 关系运算符 | 由左至右 |
8 | &(位运算符AND) | 位逻辑运算符 | 由左至右 |
9 | ^(位运算符号XOR) | 位逻辑运算符 | 由左至右 |
10 | |(位运算符号OR) | 位逻辑运算符 | 由左至右 |
11 | && | 逻辑运算符 | 由左至右 |
12 | || | 逻辑运算符 | 由左至右 |
13 | ?: | 三目运算符 | 由右至左 |
14 | = | 赋值运算符 | 由右至左 |
(16)简洁的表达式
No. | 运算符 | 范例用法 | 说明 | 描述 |
1 | += | a += b | a + b的值存放到a中 | a = a + b |
2 | -= | a -= b | a - b的值存放到a中 | a = a - b |
3 | *= | a *= b | a * b的值存放到a中 | a = a * b |
4 | /= | a /= b | a / b的值存放到a中 | a = a / b |
5 | %= | a %= b | a % b的值存放到a中 | a = a % b |
(17)简洁表达式的范例
No. | 运算符 | 范例 | 执行前 | 说明 | 执行后 | ||
a | b | a | b | ||||
1 | += | a += b | 12 | 3 | a + b的值存放到a中(同a = a + b) | 15 | 3 |
2 | -= | a -= b | 12 | 3 | a - b的值存放到a中(同a = a – b) | 9 | 3 |
3 | *= | a *= b | 12 | 3 | a * b的值存放到a中(同a = a * b) | 36 | 3 |
4 | /= | a /= b | 12 | 3 | a / b的值存放到a中(同a = a / b) | 4 | 3 |
5 | %= | a %= b | 12 | 3 | a % b 的值存放到a中(同a = a % b) | 0 | 3 |
6 | b++ | a *= b++ | 12 | 3 | a * b的值存放到a后,b加1(同a = a * b;b++) | 36 | 4 |
7 | ++b | a *= ++b | 12 | 3 | b加1后,再将a*b的值存放到a(同b++;a=a*b) | 48 | 4 |
8 | b-- | a *= b-- | 12 | 3 | a * b的值存放到a后,b减1(同a=a*b;b--) | 36 | 2 |
9 | --b | a *= --b | 12 | 3 | b减1 后,再将a*b的值存放到a(同b--;a=a*b) | 24 | 2 |
8.判断与循环语句
(1)程序的结构
一般来说程序的结构包含有下面三种:
顺序结构
选择结构
循环结构
(2)if语句
在前面简单地介绍了if的用法。要根据判断的结构来执行不同的语句时,使用if 语句就是一个很好的选择,它会准确地检测判断条件成立与否,再决定是否要执行后面的语句。
if (判断条件){
语句1 ;
…
语句2 ;
}
(3) if...else语句
³当程序中存在含有分支的判断语句时,就可以用if...else语句处理。当判断条件成立,即执行if语句主体;判断条件不成立时,则会执行else后面的语句主体。if…else语句的格式如下:
²if (判断条件){
语句主体1 ;
}else{
语句主体2;
}
(4)三目运算符
No. | 三目运算符 | 意义 |
1 | ? : | 根据条件的成立与否,来决定结果为“:”前或“:”后的表达式 |
使用三目运算符时,操作数有3个,其格式如下:
变量 = 条件判断?表达式1:表达式2
(5)switch语句
要在许多的选择条件中找到并执行其中一个符合判断条件的语句时,除了可以使用if..else不断地判断之外,也可以使用另一种更方便的方式即多重选择——switch语句,语法格式:
switch (表达式){
case 选择值1 : 语句主体 1 ; break ;
case 选择值2 : 语句主体 2 ; break ;
…….
case 选择值n : 语句主体 n ; break ; default: 语句主体 ;
}
(6) while循环
while是循环语句,也是条件判断语句。当事先不知道循环该执行多少次的时,就要用到while循环。while循环的格式如下:
while (循环条件判断){
语句1 ;
语句2 ;
…
语句n ;
循环条件更改 ;
}
(7) do…while循环
do…while循环也是用于未知循环执行次数的时候,而while循环及do…while循环最大不同就是进入while循环前,while语句会先测试判断条件的真假,再决定是否执行循环主体,而do…while循环则是“先做再说”,每次都是先执行一次循环主体,然后再测试判断条件的真假,所以无论循环成立的条件是什么,使用do…while循环时,至少都会执行一次循环主体,语句格式:
do{
语句1 ;
语句2 ;
….
语句n ;
循环条件改变 ;
}while (循环条件判断);
(8) for循环
对于while和do…while两种循环来讲,操作时并不一定非要明确的知道循环的次数,而如果开发者已经明确的知道了循环次数的话,那么就可以使用另外一种循环语句——for循环。 格式如下:
for (赋值初值;判断条件;赋值增减量){
语句1 ;
….
语句n ;
}
(9) break语句
1) break语句可以强迫程序中断循环,当程序执行到break语句时,即会离开循环,继续执行循环外的下一个语句,如果break语句出现在嵌套循环中的内层循环,则break 语句只会跳出当前层的循环。以下图的for循环为例,在循环主体中有break语句时,当程序执行到break,即会离开循环主体,而继续执行循环外层的语句
2)break语句格式
(10)continue语句
³continue语句可以强迫程序跳到循环的起始处,当程序运行到continue语句时,即会停止运行剩余的循环主体,而是回到循环的开始处继续运行。以下图的for循环为例,在循环主体中有continue语句,当程序执行到continue,即会回到循环的起点,继续执行循环主体的部分语句。