JAVA第三天学习
程序员文章站
2022-04-15 23:09:45
JAVA第三天学习1.JAVA基础—逻辑运算符&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)注意事项:逻辑运算符的结果一般为布尔类型&&,&,|,||的区别:①&&与&,|与||二者最终的运算结果一样②&&表达式左边为真继续执行右边的表达式,&左右的表达式都要执行(相比较下,&&更适用写程序),|与||同理;实例代码:publi...
JAVA第三天学习
1.JAVA基础—逻辑运算符
- &(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
注意事项:逻辑运算符的结果一般为布尔类型
- &&,&,|,||的区别:①&&与&,|与||二者最终的运算结果一样②&&表达式左边为真继续执行右边的表达式,&左右的表达式都要执行(相比较下,&&更适用写程序),|与||同理;
实例代码:
public class yunsuanfy {
public static void main(String[] args) {
int a=4;
int b=3;
System.out.println(a<b&&b++>0);
System.out.println(a);
System.out.println(b);
}
}
运行结果:false
4
3
public class yunsuanfy {
public static void main(String[] args) {
int a=4;
int b=3;
System.out.println(a<b&b++>0);
System.out.println(a);
System.out.println(b);
}
}
运行结果:false
4
4
2.位运算符
- &(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
注意事项:①位运算符都是直接对二进制补码进行运算(正数原码反码补码一样)
②^位异或:一个数被另外一个数位异或两次,该数不变 例:8 ^ 9 ^ 9=8
示例
对+10,-10进行按位取反运算
+10
原码:0 0001010
反码:0 0001010
补码:0 0001010
按位取反:1 1110101
推回原码:1 0001011
最终结果是:-11
-10
原码:1 0001010
反码:1 1110101
补码:1 1110110
按位取反:0 0001001
推回原码:0 0001001
最终结果是:9
<<与>>的用法与结论
- 左移运算符: 空位补0,被移除的高位丢弃。 例:4<<2 : 00000100 左移两位为00010000,结果是16
- 右移运算符: 被移位的二进制右移后,最高位是0,空缺位补0;最高位是1,,空位补1。例:-4>>2:10000100 右移两位为10000001,结果是-1
- 无符号移位:被移位二进制最高位无论是0或者是1,空缺位都用0补。
结论:<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
>> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
三元运算符:关系表达式?表达式1:表达式2
示例:获取三个数中的最大值
代码:
public class demo4 {
public static void main(String[] args) {
int a=20;
int b=50;
int c=30;
int max1= a>b? a:b;
int max=max1>c? max1:c;
System.out.println(max);
}
}
运行结果:50
if,switch用法示例及区别
- if:获取三个数中的最大值
代码:
public class ifdemo {
public static void main(String[] args) {
//三元表达式能写出来的,if一定能写出来,反之不可以:三元运算符是必须要有返回值,而if-else语句并不一定有返回值,其执行结果可能是赋值语句或者打印输出语句,当if else 运算后,有一个具体的的结果时,可以简化写成三元运算符。
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
int a = sc.nextInt();
System.out.println("请输入第二个数");
int b = sc.nextInt();
System.out.println("请输入第三个数");
int c = sc.nextInt();
int max = 0;
if (a > b) {
max = a;
} else {
max = b;
}
if (max > c) {
System.out.println("三个数最大值是" + max);
} else {
max = c;
System.out.println("三个数最大值是" + max);
}
}
}
运算结果是:
- switch:输入月份,判断季节
代码:
public class manydemo {
public static void main(String[] args) {
//多重条件选择
//switch 语句支持数据类型 byte short int char string 枚举
//case 后的匹配值一定是常量,所有case 后的匹配值使用一种类型,case 后的匹配值不能相同
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份");
int score = sc.nextInt();
switch (season) {
case 2:
case 3:
case 4:
System.out.println("春天");
break;
case 5:
case 6:
case 7:
System.out.println("夏天");
break;
case 8:
case 9:
case 10:
System.out.println("秋天");
break;
case 11:
case 12:
case 1:
System.out.println("冬天");
break;
default:
System.out.println("月份出现错误");
break;
}
}
}
运行结果:
区别:
//switch 针对有限个常量进行选择不能对范围进行选择
//if 对范围和常量都可以选择
switch语句注意事项break可以省略吗?可以省略,但是结果可能不是我们想要的。会出现一个现象:case穿透(继续运算下一个case的表达式,直到遇到break)
示例:
代码
import java.util.Scanner;
public class manydemo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数(2~3)");
int a=sc.nextInt();
switch(a){
case 2: a++;break;
case 3: a--;break;
default:
System.out.println("输入错误");break;
}
System.out.println("a="+a);
}
}
运行结果:
代码:
import java.util.Scanner;
public class manydemo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数(2~3)");
int a=sc.nextInt();
switch(a){
case 2: a++;
case 3: a--;break;
default:
System.out.println("输入错误");break;
}
System.out.println("a="+a);
}
}
运行结果:
本文地址:https://blog.csdn.net/Dhxy1030/article/details/107349368