常用算术符相关注意点
1.算术运算符
·自增(++)与自减(--):只需要一个操作数
·前缀自增自减与后缀自增自减
前缀自增自减法(++a,--a):先进行自增或自减运算,再进行表达式计算
后缀自增自减法(a++,a--):先进行表达式运算,再进行自增或自减运算
例:
public class Test{public static void main(String[] args){int a = 5;int b = 5;int x = 2* ++a;int y = 2* b++;}
}
上述代码运行后,结果为:a=6 , b=6 , x=12 , y=10
·无论前缀还是后缀,只要不存在于一个复杂的算术式中,而是出一个单独的跨语句中
例:
public class Test{public static void main(String[] args){int a =1;int b =1;a++;++b;}
}
上述代码运行后,结果为:a=2 , b=2
2.关系运算符
·"="是赋值运算符,而"=="才是等于运算符;
·"> , < , >= , <="只支持数值类型的比较;"== , !="支持所有数据类型的比较;
·关系表达式的运算结果为布尔值;
·"> , < , >= , <="的优先度高于"== , !="
3.位运算符
·A&B(按位与):A与B都为1,结果为1
·A|B(按位或):A与B有一个为1,结果为1
·A^B(按位异或):A与B相同,结果为0;A与B不同,结果为1
·~A(取A的反值):A=0010 1110,则~A=1101 0001
·A<<2(左移2位):A=0010 1110,则A<<2=1011 1000
·A>>2(右移2位):A=0010 1110,则A>>2=1011
·A>>>2(无符号右移2位):A=0010 1110,则A>>>2=0000 1011
4.逻辑运算符
·逻辑运算"& , |"
·短路逻辑运算"&& , ||"
·逻辑运算与短路逻辑运算的区别:
(1)当"&&"的左侧位false时,将不会计算其右侧的表达式,所以短路逻辑运算可以使代码运行的效率更高
例:
public class Test{public static void main(String[] args){int a =5;boolean b = (a<4)&&(a++<10);}
}
上述代码执行完后,结果为:b=false , a=5
(2)无论什么情况,"&"两侧的表达式都会计算
例:
public class Test{public static void main(String[] args){int a =5;boolean c = (a<4)&(a++<10);}
}
上述代码执行完后,结果为:c=false , a=6
※"|与||"的区别跟"&与&&"的区别类似
5.赋值运算符
·(%=):取模和赋值操作符
·取模运算:
负数 % 负数 = 负数
负数 % 正数 = 负数
正数 % 负数 = 正数
正数 % 正数 = 正数
例:
public class Test {public static void main(String[] args){int a = 3;int b = 10;int c = -3;int d = -10;System.out.println("10%3="+(b%a));System.out.println("10%-3="+(b%c));System.out.println("-10%3="+(d%a));System.out.println("-10%-3="+(d%c));}
}
上述代码执行完后,结果为:
6.条件运算符
·又叫三元/三目运算符
·Java中唯一一个需要3个操作数的运算符
·语法格式: 条件?表达式1 :表达式2
(1)先对条件进行判断;
(2)如果结果为true,则返回表达式1的值;
(3)如果结果为false,则返回表达式2的值
·与if-else选择结构类似,也可以转变为if-else语句
流程控制
1.定义
·用来控制程序中各语句的执行顺序
2.种类
(1)顺序结构
(2)选择结构
(3)循环结构
3.解决问题的方法
·读懂需求,分析使用到的知识点
·画流程图梳理思路
·将流程图转化为代码
·通过运行结果复盘和调整代码
4.编写选择结构的注意点
·条件后面不要加分号
·代码块只有一条语句(一个语句块)时,建议不省略{}
5.选择结构
·基本if选择结构
可以处理单一或组合条件的情况
if(表达式){语句1语句2······
}
·if-else选择结构
可以处理简单的条件分支情况
if(表达式){语句1
}else{语句2
}
·多重if选择结构(使用多重if选择语句处理问题时要注意顺序)
可以处理分段的条件分支情况
if(表达式1){语句1
}else if(表达式2){语句2
}else{语句3
}
·嵌套if选择结构
可以处理复杂的条件分支情况
if(表达式1){if(表达式2){语句1}else{语句2}}else{if(表达式3){语句3}else{语句4}
}
补充:
·字符串的比较使用equals方法 变量名.equals(字符串)
·随机获得0-9之间的整数 int random=(int)(Math.random()*10)
Math.random() 获得的是0-1之间的随机小数 0.000...~0.99999...
Math.random()*10 0.000...~9.999...
(int)(Math.random()*10) 0~9
·switch选择结构
多重分支并且条件判断是等值判断的情况
特点:条件为等值判断
如果需要每个case执行完后跳出,则需要在每个case后写上 break;
switch(表达式){case 常量1:语句;break;case 常量2:语句;break;······default:语句;break;
}
·switch与多重if
相同:都是用来处理多分支条件的结构
不同:switch 只能处理等值条件判断的情况
多重if 没有switch选择结构的限制,特别适合某个变量处于某个连续区间的情况