Java_语法基础01_运算符操作

算术运算符

在这里插入图片描述

import java.util.Scanner;
    /*
    将华氏温度转换为摄氏温度,celsius=(5/9)(fahrenheit-32)
    */
class Demo03{
    public static void main(String[] args){
        //double a=5/9;//0.0
        //double b=5.0/9;//0.5555555555555556
        System.out.println(a);
        System.out.println(b);
        Scanner input=new Scanner(System.in);
        System.out.print("Enter a degree in Fahrenheit:");
        double fahrenheit=input.nextDouble();
        double celsius=(5.0/9)*(fahrenheit-32);
        System.out.println("Fahrenheit "+fahrenheit+" is "+celsius+" in Celsius");
    }
}
class Demo04{
    //i++ 先调用,再自身+1; i-- 先调用,在自身-1
    //++i 自身直接+1;--i
    public static void main(String[] args){
        int i=3;
        System.out.println(i++);//3
        System.out.println(++i);//5
        i++;//i=6
        System.out.println(i);//6
        int j=i++;
        System.out.println(j);//6
        System.out.println(i);//7
        i=1;
        int n=++i + i++ + ++i;//2+2+4=8
        System.out.println(n);
    }
}
  • i++,调用时,先产生一个临时存储区域,调用就读取这个临时存储区域,如上述int i=3;当输出i++时,先创建一个临时存储区域,将i=3存入,输出结果为3,i变为了3+1=4;
  • 计算int n=++i + i++ + ++i;//2+2+4=8;注意 i 值的变化。

赋值运算符

在这里插入图片描述

class Demo05{
    public static void main(String[] args){
        byte b=1;
        //b=b+2;//错误: 不兼容的类型: 从int转换到byte可能会有损失
        b+=2;
        System.out.print(b);//3
    }
}
  • b=b+2//编译失败,因为b会因为int类型2被提升为int类型,运算后的结果还是int类型。无法赋值给bytet类型。
  • b+=2//编译通过,因为+=运算符在给b赋值时,自动完成了强转操作
  • 注意
    赋值号和算数运算符的混合运算属于一个运算符,不能拆分。并且这个符号会完成自动强转动作

比较运算符

在这里插入图片描述

  • 注意
    比较运算符,计算的结果一定是布尔类型
    == 不要误写为 =
    == 比较的是操作数的地址;equals() 比的是内容

逻辑运算符

在这里插入图片描述

  • “&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
  • “|”和“||”的区别同理,双或时,左边为真,右边不参与运算
class Demo06{
    public static void main(String[] args){
        System.out.println(7==7);//true
        System.out.println(7==8); //false
        String s1="bbb";
        String s2="abc";
        System.out.println(s1==s2); //false
        System.out.println('a'>'b'); //false
        //System.out.println(s1>s2); 二元运算符 '>' 的操作数类型错误
        System.out.println(s2.compareTo(s1));//-1,比较字符串,如果s2在s1前面输出-1,相等0,后面为1
        System.out.println(true==false);//false
        //System.out.println(true>false);//二元运算符 '>' 的操作数类型错误
        int i=0;
        int j=0;
        System.out.println(i++ > 0 && j++>0);//false && false,当&&时,前者为false,后者不参与运算
        System.out.println(i);//1
        System.out.println(j);//0
        System.out.println(true^true); //false,同者false,异者true

        int a=7; //0111
        int b=10;//1010
        System.out.println(a>1&b<20);//true
        System.out.println(a&b);//2
        /*
         0111
        &1010
         0010
         */
        System.out.println(a|b);//15
        /*
         0111
        |1010
         1111
         */
        System.out.println(a^b);//同者为0(逻辑比较中为false),异者为1(逻辑比较中为true),结果为13
        /*
             0111
            ^1010
             1101
        */

        //交换两个变量的值
        a=3;
        b=7;
        //1.中间值
        /*
        int temp=a;
        a=b;
        b=temp;
        */
        //2.加减法 数字
        /*
        a=a+b;  //a=10
        b=a-b;  //b=10-7=3
        a=a-b;  //a=10-3=7
        */
        //3.异或 数字
        a=a^b;
        /*
        0011
        0111
        0100 a 4
         */
        b=a^b;
        /*
        0100
        0111
        0011 b 3
         */
        a=a^b;
        /*
        0100
        0011
        0111 a 7
        */
    }
}

移位运算符

在这里插入图片描述

  • 13<<2: 13左移2位
    ____00000000_00000000_00000000_00001101
    __0000000000_00000000_00000000_00110100
    结果等于52(13*2^2)
    相当于给原数乘以2的倍数(位移数)
  • 13>>2: 13右移2位
    __00000000_00000000_00000000_00001101
    __00000000_00000000_00000000_0000001101
    结果等于3(13/2^2)
    相当于给原数除以2的倍数(位移数)

三元运算符

  • 三元运算符,也称为三目运算符或问号冒号运算符。"?" ":"一起出现,称为条件操作符。有三个表达式参与的运算表达式。既然是个运算符,那么运算完必须有运算结果。
  • 三元运算符的格式
    (表达式1)?表达式2:表达式3;
  • 三元运算符的运算原则
    1.表达式1运算结果必须为boolean类型的值
    2.当表达式1的结果为true时,表达式2的运算结果就为整个三元运算符的结果
    3.当表达式1的结果为false时,表达式3的运算结果就为整个三元运算符的结果
//下面的语句在x大于0时给y赋值1;当x小于0时给y赋值-1
y=(x>0)?1:-1;
//如果num是偶数,下面的语句就显示信息“num is even”;否则显示“num is odd”;
System.out.println((num%2==0))?"num is even":"num is odd";

操作符优先级表

  • 该表引用Java语言程序设计与数据结构(基础篇),机械工业出版社第3章
    在这里插入图片描述

  • 从上到下按优先级递减方式排列

  • 逻辑操作符的优先级比关系操作符的低

  • 关系(比较)操作符的优先级比算术运算符的低

  • 赋值操作符的优先级是最低的

  • 优先级相同的操作符在同一行
    && 的优先级比 || 高

class Demo07{
    public static void main(String[] args){
        //逻辑与的优先级比逻辑或高
        System.out.println(true||true&&false);//true
        System.out.println(true&&true||false);//true
        System.out.println(true||(true&&false));//true
        System.out.println((true||true)&&false);//false
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值