今天我们主要学习运算符,其中包括赋值运算符,算数运算符,比较运算符,逻辑运算符,条件运算符以及位运算符(了解即可)。然后学习Scanner键盘输入,Random类.
一.运算符
1.运算符的分类
运算符分为赋值运算符,算数运算符,比较运算符,逻辑运算符,条件运算符,位运算符。
2.赋值运算符
1)基本赋值运算符
= :java 中唯一一个自右向左的运算符。
2)扩展赋值运算符(赋值运算符+算数运算符)
+=,-=,*=,/=,%=.
扩展赋值运算符能够自动做强制类型转换,并且能够提高程序的运行效率。
3.比较运算符(关系运算符)
比较运算符又叫关系运算符。运算结果是boolean类型的值
大于 小于 大于等于 小于等于 不等于 等等与
> < >= <= != ==
其中不等于和等等于,既可以做基本数据类型的比较,也可以做引用数据类型的比较。而其他只能做基本数据类型的比较。
4.逻辑运算符
逻辑运算符有与,或,非,异或。符号两边都得是值为布尔类型的表达式,运算结果也为布尔类型。
& 与运算 两边操作数都为true结果才为true,只要有一个为false,结果就为false
| 或运算 两边操作数都为false结果才为false,只要有一个为true结果就为true
! 非运算 取反运算
^ 异或运算 相同为false,相反为true
短路:
如果左边的操作的值就能决定最终整个表达式的结果,右面的表达式就不再执行。
&& 短路与 两个操作数都是true才是true,一个为false结果就为false
|| 短路或 一个为true就是true,两个都为false才为false
5.条件运算符
条件运算符又叫三目运算符,三元运算符。
形式为 : 条件表达式? 值1:值2
执行流程:先执行条件表达式的值,其值为布尔类型,条件表达式结果若为true,最终结果为值1,否则为值2.
6.位运算符
位运算做乘二和除二比直接运算效率高。
操作数需要先转换为2进制,进行运算,得到结果,然后再讲结果转为10进制。
& 二进制的两个数,同一位置的值,进行逻辑判断,两个值如果有一个为0就位0,两个值都是1才是1
| 同一位置的两个数,如果有一个为1就是1,两个都是0才是0
^ 同一位置的两个数,如果相同为0,不同为1
位移运算符:
>> 右移 左边的操作数转为二进制以后,向右移动第二个操作数个位数,保留分水岭左边的内容转为十进制 分水岭:左边操作数二进制形态的最右边有一个分水岭
<< 左移 左边的操作数转为二进制以后向左移动第二个操作数个位数,剩余空间补0,再转为十进制
7.运算符的优先级
运算符的优先级指当有多个运算符参与运算时,优先运算哪个运算符。
算数运算符>位运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符;
而在算数运算符中,单目运算符>双目运算符。
可以用单目算数位关系,逻辑三目后赋值来记忆。
二.Scanner键盘输入
有时候我们需要从键盘输入信息,这个时候就需要用到Scanner类。
1.导包 import 相对地址;
提供类Scanner的位置
位置:类的上面导包
2.创建Scanner类型的引用
Scanner 变量名\引用 =new Scanner(System.in);
3.功能名字
nextInt():接收用户输入的int类型整数
nextByte():接收用户输入的byte类型整数
nextShort():接收用户输入的Short类型整数
nextLong():接收用户输入的Long类型整数
nextDouble():接收用户输入的Double类型整数
nextFloat():接收用户输入的Float类型整数
next(): 接收用户输入的String类型数据有效字符开始接收,知道遇到空格,多个宫格,tab结束接受,欲enter停止功能
nextLine() :接收用户输入的一整行的内容从第一个位置开始接收,知道输入enter结束
nextLine():功能之前如果存在系列的next功能.需要处理遗留在缓冲区的enter
4.引用.close();
一定要在用完之后关闭,否则当前类中重新开启也不能用
三.Random类
在java中,用Random类产生随机数
1.导包
import java.util.Random
2.创建类型的引用
Random .引用=new Random();
3.使用功能
1)产生随机整数
nextInt() --> int范围内的随机整数
nextInt(n) --> 随机产生 [0,n) 随机整数
n只能决定最大范围
2)产生随机小数
nextDouble() [0.0,1.0)随机小数
常用公式:
[0,max) 引用.nextInt(max);
[0,max] 引用.nextInt(max+1);
[min,max) 引用.nextInt(max-min)+min;
[min,max] 引用.nextInt(max-min+1)+min;