chapter3 运算符

运算符Operator

在这里插入图片描述

public class Operator{
	public static void main(String args[]){
		System.out.println(12/3);//4
        System.out.println(12%5);//2
        System.out.println(12/3.0);//4.0
        System.out.println(12%5);//2.0
	}
}

实现功能:任意给出一个四位数,求出每位上的数字

import java.util.Scanner;
public class TestOpe{
    public static void main(String args[]){
        System.out.print("请输入一个四位数:");
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        System.out.println("千位数是:"+num/1000);
        int num2=num%1000;
        System.out.println("百位数是"+num2/100);
        int num3=num2%100;
        System.out.println("十位数是"+num3/10);
        int num4=num3%10;
        System.out.println("个位数是"+num4);
    }
}

“+”的作用

1、表示正数

2、表示相加操作

3、进行字符串的拼接

注意:字符串加字符还是字符串 字符串的拼接:若加号左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串

        System.out.println(+5);
        System.out.println(5+6);//相加操作 11
        System.out.println(5+'6');//‘6’在底层的码是54,所以59
        //字符串的拼接:若加号左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
        System.out.println(5+6+"7");//117
        System.out.println(5+'6'+"7");//597
        System.out.println("5"+6+"7");//567
        System.out.println("5"+'6'+"7");//字符串加字符还是字符串,“56”+“7”----->567
        System.out.println("5"+'6'+'7');//567

++自增符号 --自减符号

		int a=5;
        a++;//理解为相当于 a=a+1操作;
        System.out.println(a);
        a=5;
        ++a;
        System.out.println(a);
        //如果++在后u,先运算,后加一;如果++在前,先加一,后运算
        a=5;
        int m=a++ +7;
        System.out.println("m="+m);//输出12
        System.out.println(a);
        a=5;
        int n=++a +7;
        System.out.println("n="+n);//输出13
        System.out.println(a);

运算符有优先级问题:++ > +

int a=5;
System.out.println(a++ + a++);//5+6=11;a=7
System.out.println(a++ + ++a);//7+9=16;a=9
System.out.println(++a + a++);//10+10=20;a=11
System.out.println(++a + ++a);//12+13=25;a=13

在这里插入图片描述

=作用:将等号右侧的值赋给等号左侧;

在这里插入图片描述

两个变量交换的四种方法

1、引入一个中间变量(见上图)

2、可以用两个数求和然后相减的方式进行数据交换,弊端在于如果x和y的数值过大,超出int的值会损失精度

		int x=5,y=50;
        x=x+y;
        y=x-y;
        x=x-y;
        System.out.println(x);
        System.out.println(y);

3、利用位运算的方式进行数据交换,思想是:一个数异或同一个数两次,结果还是那个数,而且不会超出int范围

        int x=5,y=50;
        x=x^y;
        y=x^y;//y=(x^y)^y=x
        x=x^y;//x=(x^y)^x=y
        System.out.println(x);
        System.out.println(y);

4、最简单的,直接通过打印语句进行交换

System.out.print(“x=”+y+" y="+x);

实现功能给出三个数求和:记住这种实现方式

        int sum=0,num1=10,num2=20,num3=30;
        sum=sum+num1;//sum+=num1;
        sum=sum+num2;//sum+=num2;
        sum=sum+num3;//sum+=num3;
        System.out.println(sum);

a+=b和a=a+b的区别

1、a+=b可读性稍差,编译效率高

2、a=a+b可读性较好,编译效率低

面试题:请问a+=b想当于a=a+b,那么也相当于a=b+a吗?

对于基本数据类型来说没有区别,但是对String类型就不一样了

逻辑运算符:&(逻辑与) |(逻辑或) &&(短路与) ||(短路或) !(逻辑非) ^(逻辑异或):

进行逻辑运算的,运算符左右链接的都是布尔类型的操作数,最终表达式的结果是布尔值,要么true,要么false

&和&&的区别:&&如果第一个就是false的话,结果直接为false,效率高;或同理

在这里插入图片描述

异或: 两个操作数一样,结果为false;两个操作数不一样结果为true

在这里插入图片描述

条件运算符(三元/三目运算符): a ? b :c

其中a是一个布尔类型的表达式,返回结果要么是true要么是false,通过a的结果决定最终表达式的结果:

如果a的结果是true,那么表达式最终结果为b

如果a的结果是false,那么表达式最终结果为c

在这里插入图片描述

三目运算符可以代替 if else

位运算符:&, | , ^ , ~ , >> , << , >>>

如何区分逻辑运算符和位运算符

逻辑运算符:左右链接的是布尔类型的操作数

位运算符:左右链接的是具体的数值

1、<< 左移 如:3<<2=? 意思是 3这个数左移两位,得到的是几

在这里插入图片描述

3<<2=12

每左移一位相当于乘以2,即3*4

面试题:4乘以8最快的方式是 4<<3

2、 >> 有符号右移

6>>2=1,符号位原来为0,现在移位后也为0,右移相当于除;6/2/2取整

在这里插入图片描述

-6>>2= -2

在这里插入图片描述

3、>>> 无符号右移

6>>>2=1

在这里插入图片描述

4、&与 6&3=2

在这里插入图片描述

5、| 或 6|3=7

在这里插入图片描述

6、异或^ 6^3=5

在这里插入图片描述

7、反~,单目运算符

~6=-7

在这里插入图片描述
在这里插入图片描述

运算符的优先级

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值