JAVA算数运算符

算术运算符


六种运算符,不同体验(((φ(◎ロ◎;)φ)));

一、除数,取余

  • 除号
		int num1=12;
		int num2=5;
		int result1=num1/num2;
		System.out.println(result1);//2

		int result2=num1/num2*num2;
		System.out.println(result2);//10
		
		//先运算右边然后赋值给左边
		double result3=num1/num2; 
		System.out.println(result3);//2.0  
		
		double result4=num1/num2+0.0;//2.0
		double result5=num1/(num2+0.0);//2.4,右边已是浮点型;
		System.out.println(result5);
		//强制转换
		double result6=(double)num1/num2;
		System.out.println(result6);//2.4
		double result7=(double)(num1/num2);
		System.out.println(result7);//2.0

  • 取余运算

%:取余运算
结果的符号与被模数的符号相同
开发中,经常使用%来判断能否被除尽的情况;

		int m1=12;
		int n1=5;
		System.out.println("m1%n1="+m1%n1);//2

		int m2=-12;
		int n2=5;
		System.out.println("m2%n2="+m2%n2);//-2

		int m3=12;
		int n3=-5;
		System.out.println("m3%n3="+m3%n3);//2

		int m4=-12;
		int n4=-5;
		System.out.println("m4%n4="+m4%n4);//-2

练习:随意给出一个整数,打印显示它的个数,十位数,百位数的值。
格式如下:
数字xxx的情况如下:
个位数:
十位数:
百位数:

例如:
数字153的情况如下:
个位数:3
十位数:5
百位数:1

class SggYunlx{
	public static void main(String[] args){
		int num=666;

		int bai=num/100;
		int shi=num/10%10;
		int ge=num%10;//Bug:除号和取余号用混,脑子想的取余

		System.out.println("百位数为:"+bai);
		System.out.println("十位数为:"+shi);
		System.out.println("个位数为:"+ge);
	}
}

二、关系运算符

关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean布尔类型)的数值。

*等于’==’**不等于’!=’**大于’>’**大于等于’>=’**小于’<’*小于等于’<='
在这里插入图片描述

三、赋值运算

  • 练习1:
short s=3;
	//s=s+2;编译不通过,精度损失;
	s+=2;//不会改变数据类型;
  • 练习2:
int i=1;
	i*=0.1;
	System.out.println(i);//0
	i++;
	System.out.println(i);//1
  • 练习3:
	int m=3;
	int n=3;
	n*=m++;
	System.out.println("m="+m);//4
	System.out.println("n="+n);//9
  • 练习4:
int t=10;
	t+=(t++)+(++t);//Bug:(t++)先和前面相加,再自运算t;
	System.out.println(t);//32

四、逻辑运算

逻辑运算符

& && | || ! ^

说明:
逻辑运算符操作的都是boolean类型的变量

  • 区分&与&&
  • &
boolean b1=true;
	b1=false;
	int num1=10;
	if(b1 &(num1++ > 0)){
	
	System.out.println("我现在在商洛学院");
	}else{
		System.out.println("我现在在北新街科技大学");
	}
		System.out.println("num1="+num1);

  • &&
boolean b2=true;
	b2=false;
	int num2=10;
	if(b2 && (num2++ > 0)){
	
	System.out.println("我现在在商洛学院");
	}else{
		System.out.println("我现在在北新街科技大学");
	}

	System.out.println("num2="+num2);
  • 相同点1:&与&&的运算结果相同
  • 相同点2:当符号左边是true时,二者都会执行符号右边的运算
  • 不同点:当符号左边是false时,&继续执行符号右边的运算,&&不在执行右边的运算;
  • 开发中,推荐使用&&

  • 区分:|与||
	boolean b3=false;
	b3=true;
	int num3=10;
	if(b3 | (num3++ > 0)){
		System.out.println("我现在在商洛学院");
	}else{
		System.out.println("我现在在北新街科技大学");
	}

	System.out.println("num3="+num3);


	boolean b4=false;
	b4=true;
	int num4=10;
	if(b4 || (num4++ > 0)){
		System.out.println("我现在在商洛学院");
	}else{
		System.out.println("我现在在北新街科技大学");
	}

	System.out.println("num4="+num4);
  • 相同点1:|与||的运算结果相同;
  • 相同点2:当符号左边边是false时,二者都会执行符号右边的运算
  • 不同点:当符号左边是true时,|继续执行运算,而||不再执行符号右边的运算。
  • 开发中,推荐使用||

  • 练习1:
int x=1;
	int y=1;
	
	if(x++==2 & ++y==2){
			x=7;

	}


		System.out.println("x="+x+",y="+y);//x=2,y=2
  • 练习2:
int x1=1,y1=1;
	
	if(x1++==2 && ++y1==2){
			x1=7;

	}


		System.out.println("x1="+x1+",y1="+y1);//x=2,y=1
  • 练习3:
int x2=1,y2=1;
	
	if(x2++==1 | ++y2==1){
			x2=7;

	}


		System.out.println("x2="+x2+",y2="+y2);//x=7,y=2
  • 练习4:
int x3=1,y3=1;
	
	if(x3++==1 || ++y3==1){
			x3=7;

	}


		System.out.println("x3="+x3+",y3="+y3);//x=7,y=1
  • 练习5:
boolean x4=true;
		boolean y4=false;
		short z=42;
		//if(y==true)
		if((z++==42)&&(y4=true))z++; 
		if((x4=false)||(++z==45))z++;
		
		System.out.println("z="+z);//46

五、位运算符

		int i=21;

		System.out.println("i<<2:"+(i<<2));//84
		System.out.println("i<<3:"+(i<<3));//168
		System.out.println("i<<26:"+(i<<26));//1409286144
		//物极必反
		System.out.println("i<<27:"+(i<<27));//-1476395008

		int m=12;
		int n=5;
		System.out.println("m&n:"+(m&n));//4
		System.out.println("m|n:"+(m|n));//13
		System.out.println("m^n:"+(m^n));//9
1.位运算符操作的都是整型的数据
2.<<:在一定范围内,每向左移1位,相当于 * 2;
  >>:在一定范围内,每向右移1位,相当于 / 2;
面试题:最高效的计算2*8?	2<<3或8<<1
  • 练习:交换俩个变量的值
int num1=10;
		int num2=20;
		System.out.println("num1="+num1+",num2="+num2);
		//方式1:定义临时变量的方式
		int temp=num1;
		num1=num2;
		num2=temp;
		
		//方式二:好处:不用定义临时变量
		//弊端:相加操作可能超出存储范围,有局限性;只能适用于数值类型
		//num1=num1+num2;
		//num2=num1-num2;
		//num1=num1-num2;

		//方式三:用位运算符
		//有局限性;只能适用于数值类型
		//num1=num1^num2;
		//num2=num1^num2;
		//num1=num1^num2;


		System.out.println("num1="+num1+",num2="+num2);

六、三元运算符

  • 1.(条件表达式)?表达式1:表达式2

  • 2.说明

    • 条件表达式的结果位boolean类型
    • 根据表达式真或假,决定执行表达式1,还是表达式2.
    • 如果表达式为true,则执行表达式1。
    • 如果表达式为false,则执行表达式2.
    • 表达式1和表达式2要求是一致的。
    • 三元运算符可以嵌套使用
  • 3.凡是可以使用三元运算符的地方,都可以改写为if—else
    反之,不成立;
    4.如果程序既可以使用三元运算符,又可以使用if-else结构,那么有限选择三元运算符:原因:简介、执行效率高;


  • 练习1:获取俩个整数的较大值


		int m=12;
		int n=5;
		int max=(m>n)?m:n;
	

		System.out.println(max);
  • 练习2:获取俩个整数的较大值(>=情况)
		int m2=12;
		int n4=5;
		String maxStr=(m2>n4)?"m2大":((m2==n4)?"m2和n4相等":"n4大");
		System.out.println(maxStr);
  • 练习3:获取三个数的最大值
		int n1=12;
		int n2=30;
		int n3=-43;
		
		int max1=(n1>n2)?n1:n2;
		int max2=(max1>n3)?max1:n3;
		System.out.println("三个数中的最大值为:"+max2);
		//不建议
		//int max3=((n1>n2)?n1:n2)>n3)?((n1>n2)?n1:n2):n3;
		//System.out.println("三个数中的最大值为:"+max3);
		
		//读写成if—else:
		if(m>n){
			System.out.println(m);
		}else{
			System.out.println(n);
		}

);

  • 练习3:获取三个数的最大值
		int n1=12;
		int n2=30;
		int n3=-43;
		
		int max1=(n1>n2)?n1:n2;
		int max2=(max1>n3)?max1:n3;
		System.out.println("三个数中的最大值为:"+max2);
		//不建议
		//int max3=((n1>n2)?n1:n2)>n3)?((n1>n2)?n1:n2):n3;
		//System.out.println("三个数中的最大值为:"+max3);
		
		//读写成if—else:
		if(m>n){
			System.out.println(m);
		}else{
			System.out.println(n);
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值