运算符
逻辑运算符
&:逻辑与(并且)
|:逻辑或(或者)
&&:与,两边为真,结果才是真(短路与)
||:或,只要有一边为真,结果就是真(短路非)
!:非,将结果取反
短路运算
&&:当左边为假时就不会再判断右边,直接输出结果
||:当左边为真时就不会判断右边,直接输出结果
扩展运算符
%=:将该运算符左边的数值除以右边的数值后取余,取余的结果赋值给左边变量本身
位运算符(二进制)
&:两个二进制数进行对比,位数都为1则输出1,否则输出0(可用于判断一个数是否为偶数)
|:两个二进制数进行对比,位数有1则输出1,否则输出0
^:两个二进制数进行对比,如果两个位数相同则输出0,否则输出1
~:取反,将位数取反,0变成1,1变成0
<<:左移
>>:右移
三目运算符
格式:
布尔类型?y:z;
原理:如果布尔类型为true则执行y,否则执行z
优先级
当搞不清优先级时,使用小括号()小括号优先级高
字符串连接符
当“+”的一边出现String类型那么就会进行字符串的拼接
包机制
为了更好组织类,java提供了包机制,用于区别类名的命名空间
引入包语法:
import package1[.package2…].(classname|*);
流程控制
选择结构
if选择结构
if单选泽结构
语法:
if(布尔表达式){ //如果布尔表达式为true将执行的语句 }
if双选择结构
语法:
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
if多选择结构
语法:
if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 }else if(布尔表达式2){ //如果布尔表达式2的值为true执行代码 }else if(布尔表达式3){ //如果布尔表达式3的值为true执行代码 }else{ //如果以上布尔表达式都不为true执行代码 }
注意:只要有一个条件分支执行了,就不会再往下执行,当分支中只有一条java语句时,可以省略大括号,但不建议这么做,if语句可以进行嵌套
switch多选择语句
语法:
switch(expression){ case Value1: //语句 break;//可选 case Value2: //语句 break;//可选 default://可选 //语句 }
break:用于结束switch语句
default语句:当所有case都没有匹配成功这个语句会执行
可选代表不是必须的,但如果没有可能会出现我们不想出现的结果
如果没有break语句就会出现case穿透现象(当一条case匹配成功执行完语句块后不会跳出switch,而是继续执行下面的case语句,直到遇到break语句或者switch语句结束
如果没有default语句会导致,最后可能没有任何信息输出
注意:switch语句中的expression必须是整型、字符型、字符串型、枚举中的一种
break和continue
break用于终止当前循环,跳出循环
continue终断当前循环进入下一次循环,并没有跳出循环
循环结构
while循环
语法:
while(布尔表达式){ //循环内容 }
只要布尔表达式为true,循环就会一直执行下去,直到遇到break
do…while循环
语法
do{ //代码语句 }while(布尔表达式);
do…while循环至少会执行一次,do语句中的代码执行后再对while的布尔表达式进行判断
for循环
语法
for(初始化表达式;条件表达式(判断);更新表达式(迭代)){ //初始化表达式可以不写 //普通代码语句,无论是否嵌套其他代码,都是一个普通代码(循环体) }
原理:
最先执行初始化表达式,并且只执行一次,然后判断条件表达式是否为true,为true则执行循环体,为false则跳出循环,执行完循环体后执行更新表达式,然后在判断条件表达式,以此类推
forEach
forEach增强for循环
java5引入的一种主要用于遍历数组或集合
语法
for(声明语句:表达式){ //代码语句 }
例:
int[] numbers = {10,20,30,40,50};//定义了一个数值 //遍历数组 for(int x:numbers){ System.out.print(x); }
声明语句:声明新的局部变量,该变量类型必须要和需要遍历的数组或集合类型相同
表达式:要遍历的数组名或者集合名
while和for的相似性
本质上while循环和for循环原理相似
for(初始化表达式;布尔表达式;更新表达式){ 循环体; }
初始化表达式; while(布尔表达式){ 循环体; 更新表达式; }