2_3、Java基本语法之运算符

一、运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

        1>算术运算符:+、-、+、-、*、/、%、(前)++、(后)++、(前)--、(后)--

                经典代码:

                         1.除法/      

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

double result2 = num1/num2+0.0;
System.out.println(result2);//2.0

double result3 = num1/(num2+0.0);
System.out.println(result3);//2.4

double result4 = (double)num1/num2;
System.out.println(result4);//2.4

double result5 = (double)(num1/num2);
System.out.println(result5);//2.0

double result6 = num1/num2*num2;
System.out.println(result6);//10.0

                        2.取模 %
                                ①取模运算的结果的符号和被取模数的符号相同。
                                ②开发当中经常运用一个值能否被除尽
                                

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

                        3.(前)++         先+1,后运算
                        4.(后)++          先运算,后+1

int x1= 10;
int y1 = ++x1;
System.out.println("x1 = "+x1+",y1 = "+y1);//11,11

int x2= 10;
int y2 = x2++;
System.out.println("x2 = "+x2+",y2 = "+y2);//11,10

                      5.(前)--:先-1,后运算
                      6.(后)--:先运算,后-1

int x3= 10;
int y3 = --x3;
System.out.println("x3 = "+x3+",y3 = "+y3);//9,9


int x4= 10;
int y4 = x4--;
System.out.println("x4 = "+x4+",y4 = "+y4);//9,10

                注意:自增运算不会改变变量的数据类型。

short s1 = 10;
s1 = s1 +1; //编译错误
s1++; //自增运算不会改变变量的数据类型。
System.out.println(s1);

7.经典例题:随意给出一个整数,打印显示它的个位数,十位数,百位数的值。

Scanner scan = new Scanner(System.in);
		
System.out.print("请输入一个三位数字:");
int i1 = scan.nextInt();
		
int bai = i1/100;
int shi = i1/10%10;
int ge = i1%10%10;
		
System.out.println(i1 + "的百位数为:"+ bai);
System.out.println(i1 + "的十位数为:"+ shi);
System.out.println(i1 + "的个位数为:"+ ge);

   运行结果:

                

        2>赋值运算符:= 、+=、 -= 、*=、 /=、%=

                        1.赋值:=、+=   

int i1 = 10;
int j1 = 10;
int i2,j2;
i2 = j2 =10;
int i3,j3 = 10;
System.out.println("**************");
//+=
int i4 = 10;
i4 += 2;
System.out.println(i4);//12

意:赋值运算符不会改变变量本身的数据类型


short s1 = 14;
//s1 = s1 + 5;  //编译错误
s1 += 5;
System.out.println(s1);//19

        3>比较运算符(关系运算符):==、!=、>、<、>=、<=、  instanceof(在面向对象章节中讲解)

int i1 = 10;
int j1 = 20;
System.out.println(i1 == j1);//false
System.out.println(i1 = j1);//20

boolean b1 = true;
boolean b2 = false;
System.out.println(b1 == b2);//false
System.out.println(b2 = b1);//true

【特别说明】
                1.比较运算符的结果都是boolean类型
                2.注意:== 和 = 的区别
                3.>  <  >=  <= 只能运用在数值类的数据中。
                4.== 和 != 不仅可以运用在数值型的数据,也可以用于引用数据类型。

例如:

Account a = new Account(1000);
Account b = new Account(1000);
boolean b1 = (a == b);//false
boolean b1 = (a != b);//true

        4>逻辑运算符:&—逻辑与、 | —逻辑或、 !—逻辑非、^ —逻辑异或、 && —短路与、 || —短路或

具体规则如图:

结论:①与运算(&)只要有一个为false,那么结果为false,必须都是true时,结果才是true。

           ②或运算 (|)只要有一个为true,那么结果就为true,必须全是false,结果才是false。

           ③非运算(!)本身为true的结果为false,本身为false的结果取true。

           ④异或运算(^)两个不相同的布尔型结果为true,相同的布尔型结果为false

           注意:逻辑运算符被操作的变量都是boolean型。结论也是boolean型。        

逻辑与和短路与的异同:

                ①相同点:当左边为true时,逻辑与和短路与都会计算右边的值。

                ②不同点:当左边为false时,短路与不会计算右边的值,而逻辑与会继续计算右边的值。

逻辑与:

boolean b1 =true;
b1 = false;
int i1 = 10;
if(b1 & (i1++>0)){
    System.out.println("我在新疆!");
}else{
	System.out.println("我在海南!");
	}
				
System.out.println("i1= "+ i1);//11

运算结果:此时变量i自增完成结果为11

短路与 :

boolean b1 =true;
b1 = false;
int i1 = 10;
if(b1 && (i1++>0)){
    System.out.println("我在新疆!");
}else{
	System.out.println("我在海南!");
	}
				
System.out.println("i1= "+ i1);//11

运算结果:此时变量i没有完成自增,结果为10.

 

逻辑或和短路或的异同:

                ①相同点:当左边为false时,逻辑或和短路或都会计算右边的值。

                ②不同点:当左边为true时,短路或不会计算右边的值,而逻辑或会继续计算右边的值。

逻辑或:

boolean b3 =true;
int i3 = 10;
if(b3 | (i3++>0)){
	System.out.println("我在新疆!");
}else{
	System.out.println("我在海南!");
}
System.out.println("i3= "+ i3);//11

运行结果:此时左边b3为true,逻辑或会计算右边,i3完成自增运算,值为11.

 

短路或:

boolean b3 =true;
int i3 = 10;
if(b3 || (i3++>0)){
	System.out.println("我在新疆!");
}else{
	System.out.println("我在海南!");
}
System.out.println("i3= "+ i3);//10

运行结果:此时左边b3为true,短路或不会计算右边,i3没有完成自增运算,值仍为10

 

        5>位运算符:

 经典代码:

        int i1 = 21;
		//i1 = -21;
		System.out.println("i1<<2:"+(i1 << 2));//84  //-84
		System.out.println("i1<<3:"+(i1 << 3));//168  //-168


		int i2 = 48;
		System.out.println("i2>2:"+(i2 >> 2));//12
		System.out.println("i2>>3:"+(i2 >> 3));//6


		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

		int x = 13 ;
		int y = 7;
		System.out.println("x&y:"+(x & y));//5
		System.out.println("x|y:"+(x | y));//15
		System.out.println("x^y:"+(x^ y));//10
		

结论:①左移"<<"
                    在一定范围内,数值每左移一位,等于该数值*2    
           ②右移">>"
                    在一定范围内,数值每右移一位,等于该数值/2    

经典例题:你能否写出最高效的2 * 8的实现方式? 
答案:① 2 << 3  ② 8 << 1
       

        6>三元运算符:(条件表达式)?表达式1:表达式2;

说明:

        1.当条件表达式为true时,结果为表达式1;当条件表达式为false时,结果为表达式2。
        2.注意:①条件表达式的结果是boolean类型
                      ②表达式1与表达式2的数据类型需要能统一为同一数据类型。

        3.凡是可以用三元运算符表达的都可以改写为if-else结构。【反之不成立】
        4.如果程序既可以用三元也可以if-else那么优先三元。原因:简洁,执行效率高。

经典例题:

1.判断两个值得最大值

        Scanner scan =  new Scanner(System.in);
		System.out.print("请输入第一个整数:");
		int m = scan.nextInt();
		System.out.print("请输入第二个整数:");
		int n = scan.nextInt();
		int max = (m>n)?m:n;
		System.out.println("最大值为" + max);

运行结果:


2.获取三个数中的最大值

		Scanner scan =  new Scanner(System.in);
		System.out.print("请输入第一个整数:");
		int m = scan.nextInt();
		System.out.print("请输入第二个整数:");
		int n = scan.nextInt();
		System.out.print("请输入第三个整数:");
		int i = scan.nextInt();
		int max = (m>n)?((m>i)?m:i):((n>i)?n:i);
		System.out.println("最大值为" + max);

 运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值