一.运算符:
1.算数运算符:+,-,*,/,%(取余),++,--
注意:
1).++,--:
A.如果表达式只做一件++或--的事情,那么前++(--)和后++(--)没有分别;
例如:int a = 10;
a++;//和++a没有区别
B.如果表达式做多件事情,那么前++(--)和后++(--)将导致整个的表达式的结果不同;
例如:
int a = 10;
int b = 20;
int c = ++a;//先将a自增1,然后再赋值;c = 11
int d = b++;//先将b赋值给d,然后再自增:d = 20,b = 21;
2).+符号:
A.如果+符号两边是数值类型(包括字符类型),做加法运算:
例如:int a = 10 + 20;
例如:char c = 'a';
System.out.println(c + 1);//98
System.out.println((char)(c + 1));//b
B.如果+符号两边,有一边是"字符串"类型,做"字符串连接"。
例如:String str = "abc";
System.out.println(str + 'd');//abcd
System.out.println(str + 10);//abc10
System.out.println(str);//abc
3)./符号:
A.整数除法:结果为商,如果不能整除,小数部分舍去;
B.对于整数除法,如果除数为0时:编译通过,运行时异常。10 / 0
C.对于浮点除法,如果除数为0时:编译通过,打印:Infinity
4).%符号:
A.对于整数,如果模数为0。编译通过,运行时异常;10 % 0
B.对于浮点,如果模数为0。编译通过,运行时打印:NaN
C.对于结果的符号,取决于"被模数(左操作数)":
-5 % 2 :结果-1
5 % -2 :1
-5 % -2 : -1
----------------------------------------------------------------------------------------------------
2.赋值运算符:=,+=,-=,*=,/=,%=
1).=符号:
A).运算顺序:从右到左;
B).此运算符会返回一个值,就是变量;
例如:int a = 10;
System.out.println(a = 20);
2).+=,-=,*=,/=,%=
A).要注意带"强制转换"功能的;
例如:byte b1 = 10;
b1 += 20;//OK的:b1 = (byte)(b1 + 20);
b1 = b1 + 20;//不可以。编译错误
b1 = (byte)b1 + 20;//不可以。此表达式只强转了b1,结果仍然是int类型;
----------------------------------------------------------------------------------------------------
3.关系运算符:==,!=,<,>,<=,>=
1).==判断是否相等:
A).是两个==符号,一个=符号是赋值运算符;
B).对于两个符号的运算符,两个符号中间不能有空格;
C).这种运算符会产生boolean类型的结果。包含关系运算符的表达式也叫:关系表达式;
----------------------------------------------------------------------------------------------------
4.逻辑运算符:&&(与),||(或),!(非),[再加三个位运算符:&,|,^]
1).逻辑运算符的操作数,必须是boolean类型,而且结果是一个boolean类型;
2).&&,||具有"短路"行为,一旦确定整个表达式的结果,将不再执行后续表达式:
例如:int a = 10;
int b = 20;
System.out.println(a > 20 && ++b > 10);
System.out.println("b = " + b);//20
3).位运算的&,|,^也可以操作boolean值,对于&和|操作boolean值的结果同逻辑的&&和||,只是没有"短路"行为:
例如:
int a = 10;
int b = 20;
System.out.println((a > 20) & (++b > 10));
System.out.println("b = " + b);//21
4).^运算符:
交换两个变量的值:
例如:int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
5).关于运算结果:
A).&&:两个都为true结果为true,有一个为false结果为false;
B).||:有一个为true结果为true。
C).!:!true即false,!false即true
D).^:两位相同结果为false:
例如:true ^ true :false
false ^ false : false
两位不同结果为true:
例如:true ^ false : true
----------------------------------------------------------------------------------------------------
5.位运算符(对整数的二进制进行直接操作):<<,>>(带符号),>>>(无符号),&,|,^,~
1).<<符号:每左移一位,相当于原数 * 2;
2).>>带符号右移:每右移一位,相当于原数 / 2。左边最高位补原符号位的值。
3).>>>无符号右移:左边最高位补0;
4).&符号:两位都为1,结果为1,其它为0;
5).|符号:有1位为1,结果为1,其它为0;
6).^符号:两位相同结果0,不同结果为1;
7).~符号:取反,1变0,0变1;
----------------------------------------------------------------------------------------------------
6.三目运算符:关系/逻辑表达式 ? 表达式1 : 表达式2
1).相当于一个判断,两个选择:
2).求两个数的最大值,求三个数的最大值;
-----------------------------------------------------------------------------------------------------------------
二.流程语句:
1.选择结构:
1).if语句:
A).if(){ //一个判断,一个选择
};
B).if(){ //一个判断,两个选择
}else{
}
C).if(){ //多个判断,多个选择
}else if(){
}else if(){
}else if(){
}else{
}
2).switch语句:
switch(表达式){
case 值1:
//语句
break;
case 值1:
//语句
break;
default:
//语句
break;
}
A).表达式:可以是byte,short,int,char,String,枚举
B).多个case之间,有没有顺序关系?没有的。
C).case和default之间,有没有顺序关系?没有的。
D).default是不是必须的?不是的。
E).break是不是必须的?不是的。
2.循环结构:
1)while(关系/逻辑表达式){
}
2)do{
}while(关系/逻辑表达式);
3)for(初始化语句;判断语句;增量语句){
}
A.注意执行顺序;
B.三个表达式都不是必须的。但是"分号"是必须的
for(;;){
}
4).对于同一个循环的问题,基本上使用三种结构都可以解决。
1.算数运算符:+,-,*,/,%(取余),++,--
注意:
1).++,--:
A.如果表达式只做一件++或--的事情,那么前++(--)和后++(--)没有分别;
例如:int a = 10;
a++;//和++a没有区别
B.如果表达式做多件事情,那么前++(--)和后++(--)将导致整个的表达式的结果不同;
例如:
int a = 10;
int b = 20;
int c = ++a;//先将a自增1,然后再赋值;c = 11
int d = b++;//先将b赋值给d,然后再自增:d = 20,b = 21;
2).+符号:
A.如果+符号两边是数值类型(包括字符类型),做加法运算:
例如:int a = 10 + 20;
例如:char c = 'a';
System.out.println(c + 1);//98
System.out.println((char)(c + 1));//b
B.如果+符号两边,有一边是"字符串"类型,做"字符串连接"。
例如:String str = "abc";
System.out.println(str + 'd');//abcd
System.out.println(str + 10);//abc10
System.out.println(str);//abc
3)./符号:
A.整数除法:结果为商,如果不能整除,小数部分舍去;
B.对于整数除法,如果除数为0时:编译通过,运行时异常。10 / 0
C.对于浮点除法,如果除数为0时:编译通过,打印:Infinity
4).%符号:
A.对于整数,如果模数为0。编译通过,运行时异常;10 % 0
B.对于浮点,如果模数为0。编译通过,运行时打印:NaN
C.对于结果的符号,取决于"被模数(左操作数)":
-5 % 2 :结果-1
5 % -2 :1
-5 % -2 : -1
----------------------------------------------------------------------------------------------------
2.赋值运算符:=,+=,-=,*=,/=,%=
1).=符号:
A).运算顺序:从右到左;
B).此运算符会返回一个值,就是变量;
例如:int a = 10;
System.out.println(a = 20);
2).+=,-=,*=,/=,%=
A).要注意带"强制转换"功能的;
例如:byte b1 = 10;
b1 += 20;//OK的:b1 = (byte)(b1 + 20);
b1 = b1 + 20;//不可以。编译错误
b1 = (byte)b1 + 20;//不可以。此表达式只强转了b1,结果仍然是int类型;
----------------------------------------------------------------------------------------------------
3.关系运算符:==,!=,<,>,<=,>=
1).==判断是否相等:
A).是两个==符号,一个=符号是赋值运算符;
B).对于两个符号的运算符,两个符号中间不能有空格;
C).这种运算符会产生boolean类型的结果。包含关系运算符的表达式也叫:关系表达式;
----------------------------------------------------------------------------------------------------
4.逻辑运算符:&&(与),||(或),!(非),[再加三个位运算符:&,|,^]
1).逻辑运算符的操作数,必须是boolean类型,而且结果是一个boolean类型;
2).&&,||具有"短路"行为,一旦确定整个表达式的结果,将不再执行后续表达式:
例如:int a = 10;
int b = 20;
System.out.println(a > 20 && ++b > 10);
System.out.println("b = " + b);//20
3).位运算的&,|,^也可以操作boolean值,对于&和|操作boolean值的结果同逻辑的&&和||,只是没有"短路"行为:
例如:
int a = 10;
int b = 20;
System.out.println((a > 20) & (++b > 10));
System.out.println("b = " + b);//21
4).^运算符:
交换两个变量的值:
例如:int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
5).关于运算结果:
A).&&:两个都为true结果为true,有一个为false结果为false;
B).||:有一个为true结果为true。
C).!:!true即false,!false即true
D).^:两位相同结果为false:
例如:true ^ true :false
false ^ false : false
两位不同结果为true:
例如:true ^ false : true
----------------------------------------------------------------------------------------------------
5.位运算符(对整数的二进制进行直接操作):<<,>>(带符号),>>>(无符号),&,|,^,~
1).<<符号:每左移一位,相当于原数 * 2;
2).>>带符号右移:每右移一位,相当于原数 / 2。左边最高位补原符号位的值。
3).>>>无符号右移:左边最高位补0;
4).&符号:两位都为1,结果为1,其它为0;
5).|符号:有1位为1,结果为1,其它为0;
6).^符号:两位相同结果0,不同结果为1;
7).~符号:取反,1变0,0变1;
----------------------------------------------------------------------------------------------------
6.三目运算符:关系/逻辑表达式 ? 表达式1 : 表达式2
1).相当于一个判断,两个选择:
2).求两个数的最大值,求三个数的最大值;
-----------------------------------------------------------------------------------------------------------------
二.流程语句:
1.选择结构:
1).if语句:
A).if(){ //一个判断,一个选择
};
B).if(){ //一个判断,两个选择
}else{
}
C).if(){ //多个判断,多个选择
}else if(){
}else if(){
}else if(){
}else{
}
2).switch语句:
switch(表达式){
case 值1:
//语句
break;
case 值1:
//语句
break;
default:
//语句
break;
}
A).表达式:可以是byte,short,int,char,String,枚举
B).多个case之间,有没有顺序关系?没有的。
C).case和default之间,有没有顺序关系?没有的。
D).default是不是必须的?不是的。
E).break是不是必须的?不是的。
2.循环结构:
1)while(关系/逻辑表达式){
}
2)do{
}while(关系/逻辑表达式);
3)for(初始化语句;判断语句;增量语句){
}
A.注意执行顺序;
B.三个表达式都不是必须的。但是"分号"是必须的
for(;;){
}
4).对于同一个循环的问题,基本上使用三种结构都可以解决。