运算符特点:所有的运算符肯定会有一个结果进行返回
1.算术运算符
++:使自身的值+1
单独使用:前++和后++的结果是一样的
参与运算:
前++:先使自身的值+1,然后再参与运算
后++:先参与运算,然后再使自身的值+1
--:使自身的值-1
单独使用:前--和后--的结果是一样的
参与运算:
前--:先使自身的值-1,然后再参与运算
后--:先参与运算,然后使自身的值-1
/:当除数和被除数都是整数时,所得的结果也是整数。如果想要结果有小数,那么必须让除数或者被除数乘以1.0f
%:取的余数
a%b的取值范围:0-(b-1)
2.赋值运算符
=:把右边的值赋值给左边的变量
扩展赋值运算符:隐含了数据类型强制转换
a += b -> a = (a的数据类型)(a+b);
...
3.关系运算符(比较运算符)
它的结果肯定是boolean类型的
==:是否等于的意思
!=:是否不等于的意思
instanceof:判断指定的值或者变量是否是指定的类型,后面会用到
4.逻辑运算符
它的结果肯定是boolean类型的
&和&&:结果都是一样的,有false则false,无false则true;常用的是双与,具有短路效果
|和||:结果都是一样的,有true则true,无true则false;常永宁的是双或,具有短路效果
^:相同false,不同true
!:非真即假,非假即真;奇数倍的时候结果是相反值,偶数倍的时候结果是它本身
如果想要连接区间,应该使用与和或
5.位运算符
位运算符都是针对补码进行的
左移位运算符:针对整数的补码向左边移动指定的位数,最高位直接丢弃,右边补0
右移位运算符:针对整数的补码向右边移动指定的位数,最高位是0就补0,是1就补1,右边移除的位数直接丢弃
左移和右移之后的值都是转换成原码之后的十进制
针对正整数左移或者右移几位,相当于乘以或者除以2的几次方
异或:将两个整数的补码二进制进行一一对应的异或,相同取0,不同取1。然后将补码转换成原码然后再转换成十进制
异或的规律:一个数值异或另外一个数值两次,结果是它本身
6.三目运算符
关系表达式?表达式1:表达式2;
执行流程:
计算关系表达式的值
如果值是true的话,就执行表达式1
如果值是false的话,就执行表达式2
7.Scanner键盘录入数据
1.导包
import java.util.Scanner
2.创建对象
Scanner sc = new Scanner(System.in);
3.接收数据
int i = sc.nextInt();
float f = sc.nextFloat();
...
接收字符串类型的数据
String s = sc.nextLine();
8.if语句
if语句注意事项:
if语句后面的小括号里面的值必须是boolean类型的
if语句后面如果没有大括号,默认只能控制一条语句;如果想要控制多条语句的话,必须加大括号
";":一条语句的结束标志,也可以表示一条空语句
if语句格式3:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}
...
else{
语句体n+1;
}
执行流程:
计算关系表达式1的值
如果值是true就执行语句体1
如果值是false,就计算关系表达式2的值
如果值是true就执行语句体2
如果值是false,就计算关系表达式3的值
如果值是true就执行语句体3
如果值是false,就计算关系表达式n的值
如果值是true就执行语句体n
如果值是false就执行else大括号里面的语句体n+1
练习题代码:
/* 键盘录入x的值,计算出y的并输出 x和y的关系满足如下: x>=3 y = 2x + 1; -1<=x<1 y = 2x; x<-1 y = 2x – 1; */ import java.util.Scanner; class Test{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入x的值:"); int x = sc.nextInt(); //判断区间,确定y的值 int y; if(x>=3){ y = 2*x+1; }else if(-1<=x && x<1){ y = 2*x; }else if(x<-1){ y = 2*x-1; }else{ System.out.println("你输入的x不在指定区间中,无法给y的值,所以就给y赋值为0"); y = 0; } System.out.println("y="+y);//错误: 可能尚未初始化变量y } }