Day02-运算符计算和循环

Day02:

1.运算符号:

加减乘除取余:

int a=12;
		int b=13;
		
		//两数之和:
		int sum=a+b;
		System.out.println("两数之和是:"+sum);
		
		
		//两数之差
		int result=a-b;
		System.out.println("两数之差是:"+result);
		
		//;两数之积
		result=a*b;
		System.out.println("两数之积是:"+result);
		
		//两数之商
		result=a/b;
		System.out.println("两数之商:"+result);
		
		//两数取余
		result=a%b;   //a%b的结果的正度是由a的正负确定的
		System.out.println("两数的余数是:"+result);
		
		//= 赋值运算  优先级最低
		
		result=20%3;
		System.out.println("-20取余3:"+result);
		
		result=-20%3;
		System.out.println("20取余3:"+result);

赋值运算:

//赋值运算:
		//= += -= /+= %=
		a=12;
		//在a基础上+2
		a+=2;
		a=a+2;
		
		byte d=12;
		d+=2;//这是一步运算
		//报错
//		d=d+2;//这是两步,先算a+2,然后把结果赋值给d;

一元运算:

//()优先级最高
		//一元运算
		//++ --
		a=12;
		//对a的值加1
		a++;  ++a;
		//对a的值减1
		a--;  --a;
		
		a=a++;
		a=++a;
		
		//a++
		//对a的值加1
		//对表达式的取值
		//后++,先(a的值)赋值(赋给表达式)后加1
		a=12;
		b=a++;
		//a=13; b=12;

比较运算符:

结果是boolean的值

< = > >= <= !=

int a=12;
		int b=23;
		
		boolean r =a>b; //false
		r=a<b;//true;
		r=a<=b;//false
		r=a>= b;//false
		r=a==b;//基本数据类型中,比较的值是否相等  3=3.0
		
		double c=12.0;
		r=a==c;
		System.out.println(r);//true

逻辑运算符:

结果也是boolean值

  • &&: (并且) A&&B 只有当A和B都为true,表达式的结果才为True,有一个false,整个表达式的结果即为false

  • int price=3500;
    		
    		boolean isBuy=price >=2500 && price<=4000;
    		
    		if(isBuy) {
    			System.out.println("购买");
    		}else {
    			System.out.println("需要申请资金");
    		}
    
  • ||: (或者) 当A和B只有有一个为true,则整个表达式结果为true,只有A和B都为false,整个表达式的结果才为false

  • if(isBuy || price<=0) {
    			System.out.println("成交!");
    		}else {
    			System.out.println("不要了");
    		}
    
  • !:(翻转结果) 原来为true,翻转之后为false:

短路现象:

A&&B 如果A为false,整个表达式的结果就可以判断为false,B不需要做运算了,B就短路了.

int a=2;
		boolean r=a++>0&&a++<0;
		System.out.println(r);//true
		System.out.println(a);//14
		
		boolean m=a++<0&&a++<0;//短路
		System.out.println(m);//false
		System.out.println(a);//13

A||B 如果A为true,整个表达式的结果就可以判断为true,B不需要做运算了,B就短路了.

a=12;
		r=a++==12||++a==12; //短路
		System.out.println(r);//true
		System.out.println(a);//13

位运算符:

凡是位运算符,都是把值先转换成二进制,再进行后续的处理
(因为位运算是针对二进制数进行的一种运算,对于十进制这些数值的位运算来说,会先将其转为二进制,再对其进行位运算,之后将运算结果再转为十进制。)****

二进制运算是最快的运算方式: 8除以2最快的方法方式 8>>1

  • 移位运算符:>>(向左移位) >>> <<(向右移位)

  • 按位运算符:& (与) | (或) ^(异或) ~(取反)

  • **(>>)😗*右移 (除以2)<<:二进制数据整体右移(各二进位全部右移若干位,对无符号数,高位补0;有符号数,各编译器处理方法不一样,有的补符号位(算数右移),有的补0(逻辑右移))

  • 	int c=20;	//00000000 00000000 00000000 00010100
      		int d=c>>1; //00000000 00000000 00000000 00001010 /=10
      		int e=c>>2;	//00000000 00000000 00000000 00000101 /=5
      		int f=c>>5; //00000000 00000000 00000000 00000000 /=0(移完了)
      		int g=c>>32;//00000000 00000000 00000000 00010100 /=20(32的倍数又移回来了)
      		System.out.println("c=20右移一位:"+d); 
      		System.out.println("c=20右移两位:"+e); 
      		System.out.println("c=20右移五位:"+f); 
      		System.out.println("c=20右移32位:"+g); 
    
  • **(<<)😗*左移 <<:二进制数据值整体左移(各二进位全部左移若干位,高位丢弃,低位补0)

  • //左移 <<:二进制数据值整体左移(各二进位全部左移若干位,高位丢弃,低位补0)
    		int i=30; 		//00000000 00000000 000000000 00011110 
    		int i1=i<<1;	//00000000 00000000 000000000 00111100 //=60
    		System.out.println("30的向左移动一位:"+i1);  
    
  • //>>和>>>的区别:

  • a=-1;   //111111111111111111111111|1
    		b=a>>1;//-1    //补符号位  符号位是0还是1,我们就补相应的几位0或1
    		System.out.println(b);
    		b=a>>>1;//2147483647  //补0
    		//111111111111111111111111111111111111
    		//011111111111111111111111111111111111|1
    		System.out.println(b);
    		System.out.println(Integer.MAX_VALUE);//2147483647
    
  • (&):按位与&:二进制数据按位与操作(都为1才为1)

  • int a=6; //二进制:00000000 00000000 00000000 00000110
    		int b=11;//二进制:00000000 00000000 00000000 00001011
    	 //				     00000010//2
    		System.out.println(a&b);//2
    
  • (|):按位或|:二进制数据按位或操作(有1则为1)

  • int a=6;	//00000000 00000000 00000000 00000110
    int b=11	//00000000 00000000 00000000 00001011
    			//00000000 00000000 00000000 00000000 00001111  =15
    System.out.println(a|b);//15
    
  • ():按位异或:二进制数据按位异或操作(相同为假0、不同为真1)

  • int a=6;	//00000000 00000000 00000000 00000110
    int b=11	//00000000 00000000 00000000 00001011
        		//00000000 00000000 00000000 00001101  =13
    System.out.println(a^b);//13
    
  • (~)取反:

  • int a=2;
    00000000 00000000 00000000 00000010
    11111111 11111111 11111111 11111101 =-3
    System.out.println(~a); 
    
  • //&& 与 &的区别:

  • boolean r=true&&false;
    r=true&false;//0 false
    //两者都可以进行逻辑运算,&&有短路现象,&没有短路现象

三元运算符 取值

//A?B:C
		//A是一个boolean类型的结果   如果A为true,此表达式就取B的值,A为false,表达式就取C的值
		a=true?12:23;
		System.out.println(a);//12
		
		a=12>0?12:13;
		System.out.println(a);//12
		System.out.println(12 > 0? 12:12.0);//12.0

运算符优先顺序:

在这里插入图片描述

2.分支判断:

1.if-else:

注意:

  • 尽量避免重复条件判断(顺序先写范围大的部分)
  • 就算只有一行代码也要写大括号
//定义一个年龄变量.超过60岁的,打印领取100元
		//超过80岁的 领取500元
		//超过90岁的,领取1000元
		//超过100岁的,领取3500元
		//其他年龄不领
		Scanner scan=new Scanner(System.in);
		int age=scan.nextInt();
		if(age>=100) {
			System.out.println("领取3500元");
		}else if(age>=90) {
			System.out.println("领取1000元");
		}else if(age>=80) {
			System.out.println("领取500元");
		}else if(age>=60){
			System.out.println("领取100元");
		}else {
			System.out.println("不领");
		}

2.switch-case:

匹配某个变量的值,如果某一个case下被匹配到,那么就从这一行开始运行直到代码结束或者运行到break.

int sex=0;  
		switch(sex) {
		default://所有的case项都不匹配才执行default;
			System.out.println("外星人");
			break;
		case 0:
			System.out.println("男性");
			break;
		case 1:
			System.out.println("女性");
			break;
		
		}
  • 代码顺序可以错乱,执行顺序不变
  • sex=3,执行顺序还是先执行case,发现没有匹配到,就执行default.
  • switch可以匹配什么值:byte short int char String(字符串),枚举(enum)

3.for循环:

for(声明计数器;继续循环的条件;计数器的递增){循环代码块}

//打印1000以内的偶数
		for(int i=0;i<1000;i++) {
			if(i%2==0) {
				System.out.println("1000以内的偶数:"+i);
			}
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值