运算符(*)
算数运算符
+:加
-:减
*:乘
/:除
%:取余
注:默认取整
++:递增
在原基础上+1;
总结:
++在后先参与运算,在自增
++在前先自增,在参与运算
细节:
++在后
1,存储原有数据
2,原值+1
3,赋值
4,使用存储的原数据进行运算
++在前
1,原值+1
2,赋值
3,参与运算
经验:
将++或--单独放在一行使用
--:递减
在原基础上-1
总结:
--在后先参与运算,在递减
字符串连接符
赋值运算符
关系运行符
--在前先递减,在参与运算
注意:
1,进行算数运算的结果的数据类型为参与运算的数据类型的最大类型
2,基本数据类型除布尔型都可参与运算,引用数据类型不能使用算数运算符
字符串连接符
+
如何区分字符串连接符与算数运算+法
看符号两边是否有字符串,如果有就是字符串连接符,如果没有就是算数运算符
如:
"hello"+"world"="helloworld";
"world"+"hello"="worldhello";
注意:
字符串与任何类型拼接结果都为字符串
赋值运算符
=:将等号右边的值赋值给等号左边的变量
+=:加等
-=:减等
*=:乘等
/=:除等
%=:余等
int a = 10;
int b = 2;
//a = a + b;
a += b;
自动转换
将小类型转换为大类型
double a = 10;
强制类型转换:
将大类型的值转换为小类型
语法:小类型 变量名 = (小类型)变量或值;
int i = 128;
byte b = (byte)i;
关系运算符
<:小于
>:大于
<=:小于等于
>=:大于等于
==:
基本数据类型判断值是否相同,相同为true,不同为false
引用数据类型判断地址是否相同,相同为true,不同为false
!=:
基本数据类型判断值是否不相同,相同为false,不同为true
引用数据类型判断地址是不否相同,相同为false,不同为true
在基本类型使用
逻辑运算符
&:与逻辑
意义:同真为真,有假为假
|:或逻辑
意义:有真为真,同假为假
!:非逻辑
意义:非真为假,非假为真
&&:短路与逻辑
判断左边表达式如果为假则不判断右边直接执行下面代码,如果左边为真则需要判断右边再执行代码
||:短路或逻辑
判断左边表达式如果为真则不判断右边直接执行下面代码,如果左边为假则需要判断右边再执行代码
三目运算符
又名:三元运算符
语法:
条件表达式?值1:值2;
执行逻辑:
如果条件表达式为true,取值1,反之
取值2
条件表达式:结果为boolean的称为条件表达式
练习:
两数之间获取最大值
int a = 10;
int b = 2;
将获取到的最大值赋值给变量
int max = a > b?a:b;
分支语句(*)
语句分类
顺序语句
从上到下依次执行
分支语句
作用:判断
循环语句
作用:重复执行
分支语句分类
if
switch
if
基本if结构
语法:
if(条件表达式){
当条件表达式位true执行此处代码
}
if else
语法:
if(条件表达式){
当条件表达式为true,执行此处代码
}else{
当条件表达式位false,执行此处代码
}
else if结构
if(条件表达式1){
条件表达式1为true,执行此处代码
}else if(条件表达式2){
条件表达式2为true,执行此处代码
}else if(条件表达式3){
条件表达式3为true,执行此处代码
}
...
else if(条件表达式n){
当条件表达式n为真,执行此处代码
}else{
当以上条件都为假时,执行此处代码
}
总结:
语法:
if(条件表达式1){
条件表达式1为true,执行此处代码
}else if(条件表达式2){
条件表达式2为true,执行此处代码
}else if(条件表达式3){
条件表达式3为true,执行此处代码
}
...
else if(条件表达式n){
当条件表达式n为真,执行此处代码
}else{
当以上条件都为假时,执行此处代码
}
else if :可以有多个,也可以一个都没有
else:最多只能有一个,可以一个都没有
if:必须存在
注:当分支语句中上面的分支为true时,将不会再判断线面的分支
if嵌套
在分支语句中使用分支语句
switch
作用:判断
语法;
switch(变量){
case 常量1:
变量值是否等于常量1,如果相同,则执行此处代码
break;
case 常量2:
变量值是否等于常量2,如果相同,则执行此处代码
break;
...
case 常量n:
变量值是否等于常量n,如果相同,则执行此处代码
break;
default:
当变量值不等于常量时,执行此处代码
break;
}
switch在JDK1.5以后支持判断枚举
JDK1.7后支持判断字符串内容是否相同
注意:
1,case语句里面有break
如果没有会造成case穿透
2,case后面的值必须为常量
3,default
可以在任意位置,不会影响语句执行顺序,如果在语句中,不要省略 break;如果在末尾可以省略break,但不建议.
4,swich语句结束条件
遇见break结束
程序末尾结束
if与switch的区别
1,if判断区间,也可以判断值是否相同,switch只能判断值是否相同
2,switch比if语法结构清晰
扩展移位符号:
位与&:
有0则0;
位或|:
有1则1;
位异或^:
相同为0,不同为1,一个数据被位异或两次,其值是他本身1!
<<:
将<<左边的数据乘以2的移动次幂(补码数据向右移动指定位数,将高位丢弃,右边空位补0)
>>:
将>>左边的数据移动 2的移动次幂(补码向右移动指定次幂,当最高符号位为1,左边补1,如果最高符号位为0,右边补0)
>>>:
无符号右移:无论最高符号位是1或0,左边永远补0