1.java中算数运算的结果默认为int类型,会直接去除小数点
int a=10;
int b=4;
System.out.println(a/b);//打印结果为:2
System.out.println(a%b);//打印结果为:2
(取模%运算 可以用于浮点型数据计算)
2.++ -- 运算符 表示对变量的自增 或者自减的操作
运算符在后面 表示先自增,再被使用
int a=1;
System.out.println(++b); //打印结果为2
*如果继续判断i的值,不需要关心++ --运算符的先后顺序;只需要关心 从头到尾i加减了几次就可以了
int i=0;
int b= (i++)+(--i)-(i--)+(++i)-(--i);
int c=(--i)+(i--)+(++i)-(--i)+(i--);
解:
int i=0;
int b= (i++)+(--i)-(i--)+(++i)-(--i);
当前括号运算式的值: 0 0 0 0 -1
运算之后i的值: 1 0 -1 0 -1
所以:b=0+0-0+0-(-1)=1
int c=(--i)+(i--)+(++i)-(--i)+(i--);
当前括号运算式的值: -2 -2 -2 -3 -3
运算之后i的值: -2 -3 -2 -3 -4
所以:c=(-2)+(-2)+(-2)+-(-3)+(-3)=-6
最后i的结果为:i=-4
3.关系运算符
== 判断是否相等
!= 判断是否不相等
> < >= <=
4.逻辑运算符
①短路与 &&; 短路或 ||
*如果运算符左侧结果能够决定整个运算结果;右侧的运算就不会执行
②与 & ; 或 |
& | 不管左侧运行结果;右侧的表达式一定会执行
5.位运算符(二进制的位)
& 按位与运算
| 按位或运算
^ 按位异或运算
~ 按位取反运算
<< 左移运算
>> 右移运算
①按位与运算 & (全是1,则为1;否则为0)
*参与运算的两个数字值,如果对应位数都为1,则该位的结果为1;否则为0
0&0=0 0&1=0 1&1=1
9:1001
10:1010
——————
1000
System.out.println(9&10); //打印的结果为:8
②按位或运算 | (全是0,则为0;否则为1)
*参与运算的两个值,如果都为0,则为0;否则为1
0|0=0 0|1=1 1|1=1
9:1001
10:1010
——————
1011
System.out.println(9|10);//打印的结果为:11
③按位异或运算 ^
*参与运算的两个值,如果其中一个是1,另外一个是0,则结果为1;
如果两个都为0或者两个都为1,结果为0.
0^0=0 0^1=1 1^0=1 1^1=0
④按位取反运算(属于一元运算符)
~0=1
~1=0
⑤左移运算符 <<
高位溢出;低位补0 在不产生溢出的情况下,每左移一位,相当于乘2
例:7<<2
7: 1 1 1
________________左移两位
1 1 1 0 0
System.out.println(7<<2);//打印的结果为:28
⑥右移运算符 >>
相当于二进制的每一位相当于小数点的位置 向右移动
低位被舍弃 高位代替原来高位的值 右移一位相当于是除2取商
例:7>>2
7: 1 1 1
____________右移两位
0 0 1
System.out.println(7>>2); //打印的结果为:1
⑦赋值运算符 =(一般不用)
int i=1;
int a,b,c,d,e;
a=b=c=d=e=i;
⑧三元表达式(类似于if else)
(1)
条件表达式 ?值1:值2
int age =18;
String status=age>=18?"成年":"未成年";
System.out.println(status);
(2)
String status="";
int age =18;
if(age>=18){
status="成年";
}else{
status="未成年";
}
作业:
package com.iweb.Test24;
public class Grade {
public static void main(String[] args) {
// 已知90分以上为优秀,80以上良好,60以上及格,其他不及格
// 定义变量grade 并提供初始值 根据成绩不同打印不同的等第
// 分别使用三元表达式和if else完成
// 提示:三元表达式需要进行嵌套使用
int grade=89;
String level=grade>=90?"优秀":grade<90&&grade>=80?"良好":grade<80&&grade>=60?"及格":"不及格";
System.out.println(level);
}
}
******打印结果*********
良好