运算符
运算符的分类:
- 算数运算符
- 赋值运算符
- 比较|关系运算符
- 逻辑运算符
- 条件运算符
- 位运算符
根据操作数的多少又可以分类为:
- 单目|一元运算符:操作数只有1个的 ++ –
- 双目|二元运算符:操作数有两个的 + - > < +=
- 三目|三元运算符:操作数有三个的 ? :
算数运算符
+:
- 正号,表示正负。
- 加减
- 字符串链接符
-:
- 负号,表示正负。
- 减号
% 模以|取模|求余数:
如果第一个操作数比第二个操作数小,结果就为第一个操作数。
++:a++ ——>a=a+1
–:a-- ——>a=a-1
操作自己|影响自己
不论-- ++放在操作数前后,都是自身-1或+1
操作别人|影响别人
++|–放在操作数前面,先自身-1|+1,再去参与运算
++|–放在操作数后面,先去参与运算,再自身-1|+1
赋值运算符
+=、-=、/=、*=
优点:
- 提高执行效率(反编译工具可以看出编译时会把a=a+b编译成a+=b)
- 自动进行强制类型转换
short i = 1;
i = i + 1;//这句不可以,整型不可以赋值给短整型
j += 1;//这句没问题,因为+=自动进行强制类型转换
i++;//这句也可以,当时当i增加的值很大时,i++也只能+1,需重复执行多次
比较|关系运算符
< > <= >= 只能比较基础数据类型:byte short char int long float double
== !=基本数据类型和引用数据类型都可以比较是否相等
最终的运算结果都为boolean类型的值
System.out.println("因为"=='因'+'为');//编译报错,因为String与int无法比较
System.out.println("因为"==""+'因'+'为');//结果为true
System.out.println("因为".equals(""+'因'+'为');//结果为true
逻辑运算符
操作值为boolean类型的表达式
& 两边操作符都为true时,结果才为true,一个为false,结果为false
| 两边操作符都为false时,结果才为false,一个为true,结果为true
! 取反
^ 异或,两边相同时,结果为false,两边不相同时,结果为true
短路与|或 推荐使用,提高执行效率
&& 当左边为false时,结果为false,不计算右边
boolean i = false && 5/0 == 0;//语句合法,因为右边被短路了
|| 当左边为true时,结果为true,不计算右边
条件运算符
条件表达式 ? 值1 :值2 ;==>表达式值为true时,结果为值1,反之,结果为值2.
练习题:
1.比较三个数的大小,取最大的值
int a = 1;
int b = 2;
int c = 3;
//第一种
int max=a>b ? a:b;
max = max>a ? max:b;
//第二种
a>b & a>c ? a :(b > c? b : c);//没有括号也行
double i = 10/3;//i=3.0
int j = 10/3;//j=3
System.out.println(i == j);//true,因为值相同
System.out.println(i);
System.out.println(j);
double i = 10/3.0;//i=3.3333333333
int j = 10/3;//j=3
System.out.println(i == j);//false,因为值不相同
System.out.println(i);
System.out.println(j);
位运算符
先把操作数转为2进制,再去运算,得到的结果再转为10进制
&
|
》 每移几位,相当于除以2的几次方==〉8》3=1
《 每移几位,相当于乘以2的几次方==〉2《 3=16
运算符优先级:
单目算数位关系,逻辑三目后赋值
Scanner类
Scanner:接收键盘输入
1.导包 告诉编译器Scanner类的位置
import 包名+类名;
位置:类的上面导包
2.创建一个Scanner类的引用|变量
Scanner sc = new Scanner(System.in);
3.使用功能
- sc.nextInt();
- sc.nextByte();
- sc.nextShort();
- sc.nextLong();
- sc.nextDouble();
- sc.nextFloat();
sc.next()
接收用户输入的字符串类型的数据,从有效字符开始,遇到空格就无法接收,遇到enter结束功能
sc.nextLine()
接收String类型数据,以行为单位接收
4.关闭
sc.close();
Random类
nextInt()随机产生一个int范围内的整数
nextInt(整数n)产生一个[0,n)的随机整数
公式:
[0.max] ran.nextInt(max +1);
[min.max] ran.nextInt(max-min +1)+min ;
[min.max) ran.nextInt(max-min )+min ;