逻辑运算符、位运算符、三元运算符、判断语句(if,switch)

逻辑运算符

  • 逻辑与 &:由false则false
  • 逻辑或 |:有true则true
  • 逻辑异或 ^:相同为false,不同为true
  • 逻辑非 !:非false则true,非true则false

&&和&的区别:

  1. 最终结果一样
  2. &&具有短路效果,左边是false,右边不执行
  3. &是无论左边false还是true,右边都会执行

位运算符

  • 位与 & :有0则1
  • 位或 | :有1则1
  • 位异或 ^ :相同则0,不同则1;特点,一个数据对另一个数据位异或两次,该数本身不变。
  • * :按位取反

实现两个整数变量的交换

方法一:创建第三方变量

 int x=10;
int y=5; int temp;
temp=x;
x=y;
y=temp; System.out.println("x="+x+",y="+y);

方法二:有弊端,有可能超出int的取值范围

 x=x+y;    //10+5=15
y=x-y; //15-5=10
x=x-y; //15-10=5

方法三:通过位异或 ^

 x=x^y;      //10^5
y=x^y; //10^5^5 y=10
x=x^y; //10^5^10 x=5

位移运算符

<<:左移  左边最高位丢弃,右边补齐0

  • 向左移动几位,就是乘以2的几次幂
 System.out.println(12<<1);      //
System.out.println(12<<2); //

>>:右移  最高位是0,左边补齐0;最高位是1,左边补齐1

  • 向右移动几次,就是除以2的几次幂(取整)
 System.out.println(12>>1);      //
System.out.println(12>>2); //

>>>:无符号右移  无论最高位是0还是1,左边补齐0

三元运算符

  • 格式:(关系表达式)?表达式1:表达式2;
  • 若表达式正确,则取表达式1,若错误,则取表达式2
 //例子
//比较两个整数是否相同
int x=10;
int y=5;
//boolean b = (x==y) ? true:false;
boolean b = (x==y) ;
System.out.println("b="+b); //获取三个整数中的最大值
int a=10;
int b=20;
int c=30;
//先比较任意两个数的值,找出这两个数中的最大值
int temp = (a>b) ? a:b;
//用前两个数的最大值与第三个数比较,获取最大值
int max = (temp>c) ? temp:c;
System.out.println("max="+max);

键盘录入的基本格式

(1)导包:import java.util.Scanner;在class上面

(2)创建键盘录入对象:Scanner sc = new Scanner(System.in);

(3)通过对象获取数据:int x = sc.nextInt();

 //例子
import java.util.Scanner;
class text{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);//通过键盘录入
System.out.println("请输入一个整数:");
int x = sc.nextInt();
System.out.println(x);
}
}
选择结构if语句

if 语句格式一:

 if(比较表达式){
    语句体;
  }

执行流程:

  • 先计算比较表达式的值,看其返回值是true还是false。
  • 如果是true,就执行语句体。
  • 如果是false,就不执行语句体。
     int age = 19;
if(age>=18){
System.out.println("可以浏览");
}
System.out.println("不可以");
}

注意事项:

(1)比较表达式无论简单还是复杂,结果必须是boolean类型;

(2)if语句控制的语句体如果是一条语句,大括号可以省略;

if语句格式二:

 if(比较表达式){
语句体1;
}else{
语句体2;
}

执行流程:

  • 首先计算比较表达式的值,看其返回值是true还是false;
  • 如果是true,就执行语句体1 ;
  • 如果是false,就执行语句体2;
//例子
//1、获取两个数中较大的值
int x = 1;
int y = 2;
if(x>y){
System.out.println(x);
}else{
System.out.println(y);
}
//2、判断一个数是奇数还是偶数,并输出是奇数还是偶数
int num = 10;
if(num%2==0){
System.out.println(num+"是一个偶数");
}else{
System.out.println(num+"是一个奇数");
}

if语句格式三:

 if(比较表达式1){
语句体1;
}else if(比较表达式二){
语句体2;
}else if(比较表达式三){
语句体3;
}
//………………
else{
语句体n+1;
}

练习:

 //例子
//1、键盘录入一个成绩,判断并输出成绩的等级
/*
90-100:优
80-89: 良
70-79: 中
60-69: 及
0-59: 差
*/
Scanner sc = new Scanenr(System.in);
System.out.println("请输入学生成绩");
int x = sc.nextInt();
if(x>=90 && x<=100){
System.out.println("优");
}else if(x>=80 && x<=89){
System.out.println("良");
}else if(x>=70 && x<=79){
System.out.println("中");
}else if(x>=60 && x<=69){
System.out.println("及");
}else if(x>=0 && x<=59){
System.out.println("差");
}else{
System.out.println("成绩录入错误");
}

if语句的嵌套使用:

 //例子
//获取三个数的最大值
int a = 10;
int b = 20;
int c = 30;
if(a>b){
if(a>c){
System.out.println(a+"是最大值");
}else{
System.out.println(c+"是最大值");
}
}else{ //b>=a
if(b>c){
System.out.println(b+"是最大值");
}else{
System.out.println(c+"是最大值");
}
}

switch语句:

int x=10;
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体1;
break;
//........
default:
语句体n+1;
break;
}
 //例子
//给定一个值,输出对应星期几
int week = 5;
switch (week) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("没有对应的星期");
break;
}
上一篇:PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符


下一篇:Java 关键字、标识符、注释、常量与变量、数据类型,算术、赋值、比较、逻辑、位、三元运算符和流程控制、break、continue【3】