网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

day04-Java基本语法(三)

2021/6/25 8:45:14 人评论

day04- Java基本语法(三)运算符位运算符三元(目)运算符优先级键盘录入步骤流程控制语句顺序结构选择结构if语句switch语句运算符 位运算符 针对二进制数据的补码形式做运算 &(按位与)、|(按位或)、^…

day04- Java基本语法(三)

  • 运算符
    • 位运算符
    • 三元(目)运算符
    • 优先级
  • 键盘录入
    • 步骤
  • 流程控制语句
    • 顺序结构
    • 选择结构
      • if语句
      • switch语句

运算符

位运算符

针对二进制数据的补码形式做运算

&(按位与)、|(按位或)、^(按位异或)、~(按位取 反)、>>(右移)、<<(左移)、>>>(无符号右移)

class WeiDemo{
    public static void main(String[] args) {
        int a=2; 
        System.out.println(a&3);//2 //操作|   
        System.out.println(a|3);//3 //操作^ 
        System.out.println(a^3);//1 //操作~ 
        System.out.println(~a);//-3

}
}

解释:
00000000 00000000 00000000 00000010 int 2 补码
00000000 00000000 00000000 00000011 int 3 补码

操作&(遇0则0)
任意整数&1=1是奇数,任意整数&正数,结果一定是正数
00000000 00000000 00000000 00000010 int 2 补码
00000000 00000000 00000000 00000011 int 3 补码
—————————————————————————
00000000 00000000 00000000 00000010 int 2 补码

操作|(遇1则1)
任意整数|0结果还是本身,任意整数|负数,结果一定是负数
00000000 00000000 00000000 00000010 int 2 补码
00000000 00000000 00000000 00000011 int 3 补码
—————————————————————————
00000000 00000000 00000000 00000011 int 3 补码

操作^(相同则0,不同则1)
00000000 00000000 00000000 00000010 int 2 补码
00000000 00000000 00000000 00000011 int 3 补码
—————————————————————————
00000000 00000000 00000000 00000001 int 3 补码

操作~(每一位按位取反)
00000000 00000000 00000000 00000010 正数 补码
—————————————————————————
11111111    11111111   11111111  11111101  负数 补码
11111111    11111111   11111111  11111100  负数 反码
10000000 00000000 00000000 00000011 负数 原码 -3

>>(右移):如果是正数,右移几位就要在最左边(高位)补上几个0;如果是负数,右移几位就要在最左边 (高位)补上几个1。
<<左移):无论正负数,左移几位就要在最右边 (低位)补上几个0。
>>>(无符号右移):无论正负数,右移几位就要在最左 边(高位)补上几个0 。

class WeiDemo1{
   public static void main(String[] args) {
       int a=8; 
       //操作>> 
       //8/2`2=2 //数据/2`移动位数 
       System.out.println(a>>2);//2 
       //操作<< 
       //8*2`2=32 
       //数据*2`移动位数 
       System.out.println(a<<2);//32 
       //操作>>>  结果一定是正数 
       System.out.println(a>>>2);//2

}
}

解释:
00000000 00000000 00000000 00001000 int 8 补码

操作>>
[00]00000000 00000000 00000000 000010(00)
00000000 00000000  00000000  00000010             2 补码

操作<<
(00)00000000 00000000 00000000 000010[00]
      00000000 00000000 00000000  00100000         32 补码

操作>>>
[00]00000000 00000000 00000000 000010(00)
00000000 00000000 00000000 00000010                2 补码

三元(目)运算符

结果一定会返回一个值

格式

布尔表达式?表达式值1:表达式值2;

执行过程
先去计算出布尔表达式的值,如果是true表明执行 表达式1返回值1,如果是false执行表达式2返回值 2。

class SanMuDemo{
     public static void main(String[] args) { 
     //获取两个整数的最大值 
     /*int a=4;
     int b=5;*/ 
     //两个表达式值的类型可以不一样但是要保证两个类型 的最大范围在接受值类型范围之内 
     //int max=a>b?'a':b;
     //System.out.println(a>b?"a":b);//如果没有接受值两个 表达式的类型不受限制
     //获取三个整数的最大值
     int a=4;
     int b=5;
     int c=3; 
     /*//求两个整数的最大值 
     int max=a>b?a:b; 
     //拿着两个整数最大值和第三个整数进行比较 
     System.out.println(max>c?max:c);*/ 
     //三目嵌套 
     System.out.println(a>b?(a>c?a:c):(b>c?b:c));
}
}

优先级

从高到低
() ~ ++ – ! * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值

键盘录入

步骤

1.导包

import java.util.Scanner; 

2.获取Scanner

Scanner sc=new Scanner(System.in);

3.获取数据

sc.nextInt();//获取整数 
sc.nextLine();//获取一行 

流程控制语句

通过语句控制Java程序的执行轨迹

顺序结构

从上往下由左往右依次编译执行(绝大部分代码)

/*
顺序结构
*/
class JavaDemo{
    public static void main(String[] args) { 
    System.out.println("欢迎来到英雄联盟!!!");  
    System.out.println("敌军还有30s到达战场,碾碎他们!!!"); 
    System.out.println("全军出击!!!");
}
}

选择结构

if语句

格式1

if(判断条件){
			语句体;
		}

执行流程:先去计算判断条件,如果判断条件计算之后的值为true接 着执行语句体执行完语句体之后执行其他语句;如果判断条件计算之后的值为false执行其他语句。

class IfDemo1{
	public static void main(String[] args) {
		int price=1999;
		int money=1000;
		//如果语句体只有一行代码可以省略{}不写
		if(money>price)
			System.out.println("不差钱,随便买!!!");
		
		//其他语句
		System.out.println("后院失火,回家了。。。");
	}
}

格式2

if(判断条件){
			语句体1}else{
			语句体2}

执行流程:
先去计算判断条件的值,如果判断条件的值计算出之后是true执行语句体1接着执行其他语句;如果判断条件的值计算出之后是false执行语句体2接着执行其他语句。

if语句格式2的语句体是值时才和三目等效

class IfDemo2{
	public static void main(String[] args) {
		//求两个整数最大值
		/*int a=3;
		int b=4;
		int max=0;
		if(a>b){
			//System.out.println(a);
			max=a;
		}else{
			//System.out.println(b);
			max=b;
		}*/
		//求三个整数最大值
		int a=3;
		int b=6;
		int c=1;
		//
		if(a>b){
			//执行到此区域表明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);	
			}
		}
		
	}
}

格式3(提供多个选择,只有一个结果)

if(判断条件1){
			语句体1;
		}else if(判断条件2){
			语句体2}else if(判断条件3){
			语句体3}
		....
		else{
			语句体n+1;
		}

执行流程:
先去计算判断条件1,如果值是true执行语句体1接着执行其他语句;如果值是false接着计算判断条件2,如果值是true执行语句体2接着执行其他语句;如果值是false接着计算判断条件3如果计算结果是true执行语句体3接着其他语句;如果一直计算判断条件的值都是false执行else里的语句体n+1接着执行其他语句。

import java.util.Scanner;
class IfDemo3{
	public static void main(String[] args) {
		//根据星星数获取对应的段位
		//通过键盘录入获取输入的星星数
		Scanner sc=new Scanner(System.in);
		int xing=sc.nextInt();
		if(xing>=0&&xing<5){
			System.out.println("倔强青铜");
		}else if(xing>=5&&xing<10){
			System.out.println("不屈白银");
		}else if(xing>=10&&xing<20){
			System.out.println("荣耀黄金");
		}else if(xing>=20&&xing<90){
			System.out.println("超凡大师");
		}else if(xing>=90&&xing<=100){
			System.out.println("嘴强王者");
		}else{
			System.out.println("亲,您输入的星星数有问题");
		}
	}
}

switch语句

格式

switch(表达式){
			case1:
				语句体1;
				break;
			case2:
				语句体2;
				break;
			case3:
				语句体3;
				break;
				...
			default:
				语句体n+1;
				break;
		}

执行流程:
先去计算出表达式的值,拿着这个计算出的值和所有的case值进行比较如果有相等的就执行对应case的语句体,执行完语句体执行break,switch语句执行结束;如果计算出的值和所有的case值都不相等执行default对应的语句体接着执行break,switch语句结束。
注意:

  1. 表达式支持byte、short、int、char,从jdk1.5开始支持枚举类型、从jdk1.7开始支持String类型
  2. case的值都是常量,不能重复
  3. 支持省略break,省略break会出现case穿透效果(给定月份返回对应的季节 晚自习)
  4. 支持省略default(选择题 机考)
  5. switch语句结束的标志
         1)遇见break
         2)执行到代码最后一行自然结束
class SwitchDemo{
	public static void main(String[] args) {
		
		//
		System.out.println("欢迎致电中国东东");
		System.out.println("查询电话余额请按1");
		System.out.println("查询套餐请按2");
		System.out.println("查询剩余流量请按3");
		System.out.println("开通带宽请按4");
		System.out.println("人工服务请按0");
		//给定输入按键的值
		int num=1;
		//根据按键来进行选择
		switch(num){
			case 1:
				System.out.println("您的电话余额为-1000");
				break;
			case 2:
				System.out.println("月内流量10G");
				break;
			case 3:
				System.out.println("剩余流量10MB");
				break;
			case 4:
				System.out.println("请提供身份证以#结束");
				break;
			case 0:
				System.out.println("正在为您转接人工客服,此次通过已被录音");
				break;
			default:
				System.out.println("输入错误,请重新输入");
				break;
		}
	}
}

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?