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

    运算符

    算术运算符

    取余 自加 自减
    + - * / % ++ --
    public class 算术运算符 {
    	public static void main(String[] args) {
    		int 被除数, 除数, 商, 余数;
    		被除数 = 10;
    		除数 = 3;
    		商 = 被除数 / 除数;
    		余数 = 被除数 % 除数;
    		System.out.println("商:" + 商 + " 余数:" + 余数);
    	}
    }
    

    浮点数也能取余,把上述代码的int改为double:

    商:3.3333333333333335 余数:1.0

    另外,浮点数可以除以0:

    商:Infinity 余数:NaN

    比较运算符

    > < >= <= == !=

    位运算符

    用于操作整数类型(char也算入)

    按位与 按位或 按位异或 补码取反 左移 右移 无符号右移
    & | ^ ~ << >> >>>

    关于补码取反,参见:

    位运算法则:

    p q p&q(同1为1) p|q(有1则1) p^q(同0异1)
    1 0 0 1 1
    0 1 0 1 1
    1 1 1 1 0
    0 0 0 0 0

    重点掌握:

    • >> 右移(除以2^n)
    • << 左移(乘以2^n)
    public class 左移右移 {
    	public static void main(String[] args) {
    		int a;
    		a = 512;
    		System.out.println(a << 1);
    		System.out.println(a >> 1);
    		System.out.println(a >>> 1);
    		a = -512;
    		System.out.println(a << 1);
    		System.out.println(a >> 1);
    		System.out.println(a >>> 1);
    	}
    }
    

    ​ 对于int a=3,扩大8倍最快的方法是a<<3,即左移3位,相当于乘以23,计算机做位移的操作要被乘除快得多,比加法都快。

    扩大2倍 a<<1 缩小2倍 a>>1
    扩大4倍 a<<2 缩小4倍 a>>2
    扩大8倍 a<<3 缩小8倍 a>>3
    扩大16倍 a<<4 缩小16倍 a>>4

    逻辑运算符

    用于操作bool类型

    运算符 说明
    && AND,同真为真
    || OR,一荣俱荣
    NOT

    短路逻辑运算

    以&&为例:

    • 两个操作数都为true时,结果才为true;
    • 第一个为false时,结果就必为false,这时不会再判断第二个操作
    public class 短路逻辑运算 {
    	public static void main(String[] args) {
    		int a = 1;
    		if ((a < 0) && (a++ < 1)) {
    			// Do Nothing
    		}
    		System.out.println(a);
    	}
    }
    

    “短路逻辑运算”针对布尔类型数据,而位运算符针对整型数据。

    运算符 说明
    & 不短路与
    | 不短路或

    赋值运算符

    等号运算符(=)左侧只能是变量;右侧不一定。
    连续赋值:a = b = 3;降低可读性,不推荐使用。

    扩展的赋值运算符:(x+=2相当于x=x+2)

    += -= *= /= %=
    &= |= ^= <<= >>= >>>=

    推荐使用扩展的赋值运算符:①代码更简洁②效率较高

    public class 赋值运算符 {
    	public static void main(String[] args) {
    		byte a = 1;
    		// 2是int,a+2自动提升为int类型
    		// 再赋值给a,需要显式转换一下
    		a = (byte) (a + 2);
    		System.out.println(a);
    		a = 1;
    		a += 2;
    		System.out.println(a);
    	}
    }
    

    运算符优先级

    括号 ( )
    单目运算符 自加、自减、~、!
    算术运算符 */%
    加减(+-)
    位运算符1 位移(>>、<<、>>>)
    比较运算符 大于小于
    等于·不等于
    位运算符2 按位与
    按位异或
    按位或
    逻辑运算符 &&
    ||
    三目运算符 ?:
    赋值运算符 含扩展赋值
  • 相关阅读:
    MyBatis3系列__01HelloWorld
    localStorage、sessionStorage、Cookie的区别及用法
    Javascript数组原型方法大全以及实例!!
    如何使用正则表达式以及封装函数?
    收藏多年的正则表达式笔记大全,绝对是干货!
    手写Ajax的意义所在,从青铜到钻石!
    Git的常用命令
    阿里云部署服务器流程
    MongoDB常用数据库命令第二集
    vuex简单化理解和安装使用
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11179023.html
Copyright © 2011-2022 走看看