zoukankan      html  css  js  c++  java
  • Java零基础—运算符

    运算符

    运算符有优先级,不确定的就加括号。按功能划分主要运算符如下:

    算术运算符

    常见的加减乘除,再加上取余

    /*
      + 求和   - 相减
      * 乘积   / 商
      % 求余数
      ++ 自加  -- 自减
    */
    public static void main (String[] args){
        int i = 10;
        int j = 3;
        System.out.println( i + j );//13
        System.out.println( i - j );//7
        System.out.println( i * j );//30
        System.out.println( i / j );//3
        System.out.println( i % j );//1
    
        //++ 运算可以出现在变量前,也可以出现在变量后。
        int k = 10;
        k ++;//单目运算符
        System.out.println(k);//11
        
        int y = 10;
        ++ y;
        System.out.println(y);//11
    
        int a = 100;
        int b = a ++;//先赋值,再自加1
        System.out.println(a);//101
        System.out.println(b);//100
    
        int c = ++ a;//先自加,在赋值
        System.out.println(a);//102  
        System.out.println(c);//102
        
        int d = 10;
        System.out.println(d ++);//10
        int e = 10;
        System.out.println(++ e);//11
    
    }

    关系运算符

    关系运算符比较的是运算符两边的变量保存的值,运算结果一定是布尔类型true/false。

    
    
    /*
      > 大于、>= 大于等于、< 小于、<= 小于等于、== 等于、!= 不等于
    */
    public static void main(String[] args){
        int a = 10;
        int b = 10;
        System.out.println( a > b );//false
        System.out.println( a >= b );//true
        System.out.println( a < b );//false
        System.out.println( a <= b );//true
        System.out.println( a == b );//true
        System.out.println( a != b );//false
    }
    
    

    逻辑运算符

    逻辑运算符要求两边的算子都是布尔类型,并且最终的运算结果也是布尔类型。

    
    
    /*
      & 逻辑与    | 逻辑或
      ! 逻辑非    ^ 逻辑异或
      && 短路与   || 短路或
    */
    public static void main(String[] args){
        // & 两边的算子都是true,结果才是true
        System.out.println(true & true); //true
        System.out.println(true & false); //false
        System.out.println(false & true); //false
        System.out.println(false & false); //false
    
        // | 两边的算子,只要有一个是true,结果就是true
        System.out.println(true | true); //true
        System.out.println(true | false); //true
        System.out.println(false | true); //true
        System.out.println(false | false); //false
    
        // ! 取反,单目运算符
        System.out.println( !false );//true
        System.out.println( !true );//false
    
        // ^ 两边的算子只要不一样,结果就是true
        System.out.println(true ^ true); //false
        System.out.println(true ^ false); //true
        System.out.println(false ^ true); //true
        System.out.println(false ^ false); //true
    
        //短路与和逻辑与最终的运算结果是相同的、短路或和逻辑或最终的计算结果也是相同的,只不过短路与、短路或存在短路现象。短路现象概况为:根据左边算子可以确定最终结果,那边就不再运算右边算子
        int x = 10;
        int y = 8;
        int m = 10;
        int n = 8;
        System.out.println( x < y & ++x < y);
        System.out.println(x);//11
        System.out.println( m < n && ++m < n);
        System.out.println(m)//10
    }
    
    

    逻辑与和短路与、逻辑或和短路或,根据实际需求选择,没有绝对的用或不用。

    赋值类运算符

    先执行等号右边的表达式,将执行结果赋值给左边的变量。

    基本的赋值运算符

    
    
    /*
       =
    */
    public static void main(String[] args){
        int i = 5;
        System.out.println(i);//5
        i = i + 10;
        System.out.println(i);//15
    }
    
    

    扩展的赋值运算符

    扩展类运算符不改变运算结果的数据类型,但是使用的时候可能会损失精度。

    
    
    /*
        +=,-=,*=,/=,%=
     */
    public static void main(String[] args){
        int i = 5;
        i += 10;//扩展的运行符,等同于: i = i + 10;其他扩展的运算符类似
        System.out.println(i);//15
    
        byte a = 10;//10没有超出byte的取值范围,赋值正确
        //a = a + 5;//编译错误,a + 5 为int类型,将int类型赋值给byte,即大容量向小容量赋值,需强制类型转换,所以会编译错误,提示:可能会损失精度
         a += 5;//编译通过,等同于 a = (byte) (a + 5),不等同于 a = a + 5.
        
        byte b = 0;
        b += 128;//编译通过
        System.out.println(b);//-128 运行结果损失精度
    
    }
    
    

    字符串连接运算符

    “+”运算法在Java中有两个作用,一是加法运算,求和;二是字符串的连接符。当“+”两边的数据都是数字时,一定进行的是加法运算;当“+”两边只要有一个数据是字符串,一定会进行字符串的连接运算,且最后的运算结果是一个字符串。

    public static void main(String[] args){
        
        System.out.println( 10 + 20 );//30,求和
        System.out.println( 10 + 20 + 30 );//60,求和
        System.out.println( 10 + 20 + "30");//3030,第一个+号求和,第二个+号是字符串连接
        System.out.println( 10 + (20 + "30"));//102030,括号里面的+号是字符串连接,运算结果是字符串2030,然后是10+“2030”,最后得到102030
    
        int a = 10;
        int b = 20;
        System.out.println( a + "+" + b + "=" + a + b);//10+20=1020
        System.out.println( a + "+" + b + "=" + (a + b));//10+20=30
    }

    三元运算符

    三元运算符也叫三目运算符或条件运算符,语法规则为:布尔表达式 ?表达式1 : 表达式2

    其执行原理为:当布尔表达式的结果为true时,选择表达式1为整个表达式的执行结果,当布尔表达式为false时,选择表达式2为整个表达式的执行结果。

    
    
    public static void main(String[] args){
        boolean sex = false;
        String st = sex ? "男" : "女"
        System.out.println(st);//
        System.out.println(sex ? '男' : '女');//
    }
    
    

    位运算符

    位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。

    位运算符用来对二进制位进行操作,参与运算的两个数均以补码出现,一般只能操作整数类型的变量或值,Java中提支持的位运算符有7种,除 ~ 以外,其余均为二元运算符。

    & 按位与

    | 按位或

    ^ 按位异或

    ~取反

    <<左移

    >>右移

    >>>无符号右移运算符

    第一个操作数

    第二个操作数

    按位与&

    按位或 |

    按位异或 ^

    0

    0

    0

    0

    0

    0

    1

    0

    1

    1

    1

    0

    0

    1

    1

    1

    1

    1

    1

    0

    
    

    按位与运算

    按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

    
    
    public static void main(String[] args){
        System.out.println( 5 & 9 );//1
    }
    
    

    运算原理如下图:


    按位或运算

    按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

    
    
    public static void main(String[] args){
        System.out.println( 5 | 9 );//13
    }
    
    

    运算原理如下图:


    按位异或运算

    按位异或运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两个对应的二进位相异时,结果为1。参与运算数仍以补码出现。

    public static void main(String[] args){
        System.out.println( 5 ^ 9 );//12
    }
    运算原理如下图:

    求反运算

    求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。

    public static void main(String[] args){
        System.out.println( ~-5);//4
    }

    运算原理如下图:

    左移运算

    左移运算符,是双目运算符。左移n位就是乘以2的n次方。 其功能把左边的运算数的各二进位全部左移若干位,由右边的数指定移动的位数,高位丢弃,低位补0。

    
    
    public static void main(String[] args){
        System.out.println(-5 << 2);//-20
    }
    
    

    运算原理如下图:


    右移运算

    右移运算符,是双目运算符。右移n位就是除以2的n次方。其功能是把左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1.

    public static void main(String[] args){
        System.out.println(-5 >> 2);//-2
    }

    运算原理如下图:

    
    

    无符号右移运算符

    无符号右移运算符,把第一个操作数的二进制码右移指定位数,左边空出来的数总是以0补充。无符号右移运算得到的结果总是一个正数。

    public static void main(String[] args){
        System.out.println(-5 >>> 2);//1073741822
    }

    运算原理如下图:



    世界旋转着我们的生命,一天一天的接近死亡。
  • 相关阅读:
    mysql事物中行锁与表锁
    https的实现原理
    基于http的断点续传和多线程下载
    Cookie与Session
    centos 7 安装python3
    为CentOS下的Docker安装配置python3【转】
    Jmeter如何提取响应头部的JSESSIONID【转】
    centOS7 安装nginx
    centos 7.X关闭防火墙和selinux
    (四)从输入URL到页面加载发生了什么
  • 原文地址:https://www.cnblogs.com/zhaozhg/p/14170521.html
Copyright © 2011-2022 走看看