第三章 操作符

    科技2022-08-19  119

    文章目录

    1.操作符5.算数操作符Random类: 6.自动递增和递减7.关系操作符8.短路9.直接常量10.按位操作符如果两个输入位都是1如果输入位的某一个是1,不全是1 11.位移操作符[无符号]右移操作符(>>>) 13.字符串操作符 + 和 +=15.提升17.操作符小节

    1.操作符
    +、-、*、/在最底层,java中的数据时通过使用操作符来操作的优先级:先乘除,后加减。括号优先级最高
    5.算数操作符

    取模(%):从整数除法中产生余数

    整数除法(/):直接去掉结果的小数位

    Random类:
    new Rand() 把当前时间当作随机数种子,每次执行产生 不同 的值new Rand(seed) 传入随机数种子,每次执行产生 相同 的值 一元加减:x = a * (-b) 一元操作符只用于转变数据
    6.自动递增和递减
    ++a(前缀递增):先执行运算,在生成结果a–(后缀递减):先生成值,再执行运算
    7.关系操作符

    <、>、<=、>=、!=

    package Chapter3.Example01; /** * @author:YiMing * @create:2020/10/2,13:49 * @version:1.0 */ public class Example01 { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); //"=="和“!=”比较的是[对象引用] System.out.println("n1 == n2: " + (n1 == n2));//false System.out.println("n1 != n2: " + (n1 != n2) + "\n");//true //equals()比较的是实际内容,不适用于“基本类型”,基本类型使用”==“和”!=“ System.out.println("n1.equals(n2): " + (n1.equals(n2)) + "\n");//true //equals()默认比较引用,除非再自己的类中覆盖equals方法 value v1 = new value(); value v2 = new value(); v1.i = v2.i = 100; System.out.println("v1.equals(v2): " + (v1.equals(v2)));//false } static class value { int i; } }

    "=="和“!=”比较的是[对象引用]

    equals()比较的是实际内容,不适用于“基本类型”,基本类型使用”==“和”!=“

    equals()默认比较引用,除非再自己的类中覆盖equals方法

    8.短路
    package Chapter3.Example02; import static net.mindview.util.Print.*; public class ShortCircuit { static boolean test1(int val) { print("test1(" + val + ")"); print("val < 1 结果: " + (val < 1) + "\n"); return val < 1; } static boolean test2(int val) { print("test2(" + val + ")"); print("val < 2 结果: " + (val < 2) + "\n"); return val < 2; } static boolean test3(int val) { print("test3(" + val + ")"); print("val < 3 结果: " + (val < 3) + "\n"); return val < 3; } public static void main(String[] args) { /** * test1 true; * test2 false 【短路】 */ boolean b = test1(0) && test2(2) && test3(2); print("表达式结果: " + b); } }

    当test1为true继续执行,当test2为false时整个表达式最终为false,所以就没必要在执行下去

    9.直接常量
    后缀字符表示类型L / l 表示 longF / f 表示 floatD / d 表示 double十六进制:前缀 0x(0X) + 0~9 (a~f / A~F)八进制:前缀 0 + 0~7如果超出范围,编译器会自动转为int,并告诉我们进行“窄化转型”指数计数法
    10.按位操作符
    如果两个输入位都是1
    按位“与”运算(&)生成 1按位“或”运算(|)生成 0
    如果输入位的某一个是1,不全是1
    按位“异或”运算(^)生成 1按位“非”运算(~)生成 和 输入相反 按位操作符可与等号(=)联用,以便合并运算和赋值。&= 、|= 、^= 都是合法的
    11.位移操作符

    位移操作符只可用来处理整数类型

    左移位操作符(<<):按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0) 例:11111111111 → 10000000000

    [有符号]右移操作符(>>):按照操作符右侧指定的位数将操作符左边的操作数向右移(若符号为正,则在高位插入0;若符号为负,则高位插入1)

    [无符号]右移操作符(>>>)
    使用“零扩展”:无论正负,都在最高位插入0对 char、byte、short 位移操作。在位移之前会被转为int类型,结果也是int对 byte、short位移,会先被转换为int,再进行右移操作,然后被截断。赋值给原来的类型,再这种情况下可能得到-1的结果
    13.字符串操作符 + 和 +=
    int x = 0 print( “”+ x );//0这种一个空白的String后面跟随 + 和 一个基本类型变量,以此作为不调用更加麻烦的显示方法( Integer.toString(x) )而执行字符串的转化方式
    15.提升
    只要比int小的类型(char、byte、short),在运算前,会自动转化成int通常表达式中出现的最大的数据类型决定表达式最终的数据类型例:float * double → double int * long → long
    17.操作符小节
    在 char、byte、short 中,进行算术运算,都会获得一个int结果,必须将其显示地类型转换回原来的类型(窄转换可能会造成信息丢失)以将值赋给原来类型
    Processed: 0.017, SQL: 9