逻辑运算符
逻辑运算符有:
&(并且),|(或者),!(非),^(异或),&&(短路与),||(短路或)
逻辑运算符的运算解果也是boolean类型,
&:多个条件同时成立,判断结果真假,&符号两段只要任意一边的表达式的结果是false,那么最终结果为false,只有结果都为true,结果为true。
|:两段的表达式,只要有任意一段为TRUE,其最终结果为true。,只有两段表达式结果都是false,其结果为false。
!:取反。
^:相同为false,不同为true。
这里可以比作男女关系:男男不符合人文关系,女女也一样,只有男女符合。(我们老师如是说到,看到这里我就想问女人什么时候才能站起来,气抖冷。。。。。。老拳师了,开玩笑啊)
&&与||
先说明&与&&,和 | 和 || 的区别
&与&&在运算结果上没有区别,但是在运算效率上有区别。
我们先看实操
我们看到,"&"的逻辑下,左端表达式为false,但是后面的“b”输出为11,而当在“&&”的逻辑下,左端也为false,这时候我们中断了,短路了(不然我们为什么叫他是中断与呢),右端就不计算了,所以“D”的输出还是20。所以此处的规则就是,当&&的左端为 false,那么之后就不运算了,但是左端是true时,我们依旧会继续运算。
||:而在短路或时,系统为了判断到底是true呢,还是false呢?我们就会在程序中发现(如下图),左端是true时,这时就不再继续运行计算了,因为系统已经知道最终结果是TRUE了,没必要了,但是当左端是false时,系统此时还判断不了,所以继续运算。
就像生活中的例子,一旦得知了一个女人已经有了一个强大可靠的男人,这时候我们也不会继续追了,我们就在追她的道路上短路了(听者伤心,闻者流泪)
位运算符
&(与),|(或),^(异或),~(按位取反),<<(左移),>>(右移),>>>(无符号右移)
注意事项:位运算是直接对二进制补码进行运算。
我们还要注意区分,位运算符和逻辑运算符的前三个不是一样吗?我们怎么区分呢?
& | ^左右两段跟的是数值,就是位运算符,两段跟的是布尔类型,就是逻辑运算符。
规则。
&:有0则0
|:有1则1
^:相同则0,不同为1
~:包括符号位,0变1,1变0.
<<:将一个数字的补码进行左移N个,左端移动的N个个数丢去,右端补0
》:右移时,最高位是0,右移后,补0,做高位是1,右移之后补1.
》》》:不管最高位是1是0,我们右移后都补0
还有一下神奇的特点。
1.一个数,被另一个书^异或两次,那么该数不便。一个数与自己异或结果是0.
<<:把数据乘以2的移动次幂,就是数据的结果,如3<<2. 3*2^2=12
》:把数据除以2的移动次幂,就是数据的结果,如10 10/2^2=2(此处结果只保留整数结果,如果除不了,则为0).
案例,值交换。方法一:
int a=10;
int b=20;
a=t;
a=b;
b=t;
//此时数据达成交换
方法二:
int a=10;
int b=20;
a=a^b;//异或一次
b=a^b;//异或两次,此时变回来了,给b赋值了,a^b^b
a=a^b;//异或三次,给a赋值.a^a^b
//这里用到的是上面的特点,一个数被另一个书异或两次,其数不变。那我再异或以此,不就变了嘛。
方法三:
int a=10;
int b=20;
a=a+b;
b=a-b;
a=a-b;//通过加减运算
方式四:
int a=10;
int b=20;
b=(a+b)-(a=b);
三元运算符
语法:表达式?—>结果1:结果2
如果表达式的值是true,那么返回结果1,如果是false,那么返回结果2.
int a=100;
int b=200;
int max=a>b?a:b;
三数比较
int a=100;
int b=200;
int c=300;
int max1=a>b?a:b;
int max2=max1>c?max1:c;
流程语句
控制程序执行过程中,各条语句的执行顺序
流程分类
1.顺序结构 很简单,以此从上到下,以此执行
2.选择结构
3.循环结构
选择结构if语句格式及其使用
选择性的执行
有:
if 语句和switch语句
if语句的格式:
1.if(布尔类型的值或者布尔类型结果的表达式){需要执行的代码},这个值考虑true的情况
if(true){
System.out.println("输出的结果");
}
在语句中,小括号里面如果是true,那么{}里面就会执行,否则不行
2.真假情况都考虑:if(布尔条件){真的情况处理}else{假的情况处理}
public static void main(String[] args) {
int a=10;
int b=20;
if(a==b){
System.out.println("123123123");
}else{
System"2123123123123123123");
}
System.out.println();
这里有个知识点,现在我们进入编译程序,我们看到的输出为打印出来的,但是我们执行完后还要用到输出数据,就需要在加以恶定义变量
int a=10;
int b=29'
int max=0;
.
.
.
.
.
.
System.out.println();
int mun=10;
System.out.println(max+mun);
关于if语句的嵌套使用
import java.util.Scanner;
public class DEMO_if {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1个数");
int n1 = sc.nextInt();
System.out.println("请输入第2个数");
int n2 = sc.nextInt();
System.out.println("请输入第3个数");
int n3 = sc.nextInt();
int max=0;
if(n1>n2){
if(n1>n3){
max=n1;
}else{
max=n3;
}
}else{
if(n2>n3){
max=n2;
}else{
max=n3;
}
}
System.out.println(max);
}
}
还有一种写法是:
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1个数");
int n1 = sc.nextInt();
System.out.println("请输入第2个数");
int n2 = sc.nextInt();
System.out.println("请输入第3个数");
int n3 = sc.nextInt();
int max=0;
if(n1>n2&&n1>n3){
max=n1;
if(n2>n1&&n2>n3){
max=n2;
if(n3>n1&&n3>n2){
max=n3;
}
}
}
逻辑由自己来定,只要能说得通,理得顺,就可以了
3.多重条件选择
语法:if(条件){执行的代码}else if(条件){执行的代码}。。。。。。。。。。else{执行的代码}
例子,根据成绩的范围输出优良中差。
三元表达式和if else的区别
能用三元表达式写出来的,if else一定能写出来,反之则不一定能写出来。
switch语句
语法:
int a=10;
switch (a){
case 123:
System.out.println("ok");
break;
case 10:
System.out.println("ok");
break;
case 138:
System.out.println("ok");
break;
default:
System.out.println("no");
break;
}
}
}
switch语句注意事项
1.switch所支持的类型:byte,short,int,char,JDK1.5之后,支持枚举类型,JDK1.7之后,支持字符串类型
2.case匹配项:只能跟常量,不能写变量;
多个case的值不能重复;
多个case项的数据类型数据类型要一致。
3.default:所有case项都没有匹配上,执行default 的默认项;
default项不是必须要提供的,也不是必须要放在最后面
4.break:用来解释switch语句的;
如果说我们故意不写,这时不会发生报错,但是会发生case穿透,我们是可以利用的(我在想法穿机制是不是这样来的。。。。。
if 和switch 的区别
if是对布尔类型的判断,是对结果的判断,对范围,对常量进行判断
switch只能弄些常量进行判断,他不能判断范围
循环语句
for
语法:for(int a=初始值;a<目标值;a++){}
水仙花案例
while循环
语法:
int a=1;
while (a <= 10) {
System.out.println(a);
a++;
}
do while
语法:do{}while();
我们的使用规则是:
我们知道循环的次数:用for
如果不知道循环次数,用while,但是要知道结束循环的条件
obhQCS7W-1586439616721)]
水仙花案例
[外链图片转存中…(img-UpMASpUF-1586439616722)]
while循环
语法:
int a=1;
while (a <= 10) {
System.out.println(a);
a++;
}
do while
[外链图片转存中…(img-dx6R39Ur-1586439616723)]
语法:do{}while();
我们的使用规则是:
我们知道循环的次数:用for
如果不知道循环次数,用while,但是要知道结束循环的条件