• 【Java编程思想】3.操作符


    在最底层,Java 中的数据都是通过使用操作符来操作的。


    3.1 静态导入

    import static com.xxx.... // 可直接引入包中的方法
    

    3.2 使用 Java 操作符

    • 几乎所有操作符智能操作基本类型。
    • 例外的‘=’,‘==’,‘!=‘,能操作所有对象。
    • String 类支持’+‘,’+=‘.

    3.3 优先级

    • 先乘除,后加减。
    • 多用括号,少歧义。

    3.4 赋值

    ’=‘赋值操作符:

    • 取右边的值,赋给左边的值。
    • 右边可以是任何常数,变量或者表达式。
    • 左边必须是一个明确的,已命名的变量。

    对于赋值,又区分为:

    • 基本类型的赋值:
      基本类型存储了实际的数值,而非指向一个对象的引用。是直接将一个地方的内容复制到另一个地方。
    • 对象的赋值:
      真正操作的是对象的引用,是将“引用”从一个地方复制到另一个地方。

    关于别名的问题:

    • 将一个对象的引用 t1 直接赋值给另一个对象 t2 后,t1 会随着 t2 的变化而变化,因为赋值的是引用,两个变量实际指向了相同的对象。这种现象被称为“别名”。
    • 将一个对象传递给方法时,也会产生别名问题。

    3.5 算数操作符

    Ramdom 类:随机数生成器,对于特定的种子值总会产生相同的随机数序列(所以实际上是伪随机)。


    3.6 自动递增和递减

    • 递增:++;递减:--
    • 前缀-->先执行计算,后生成值;后缀-->先生成值,后执行计算

    3.7 关系操作符

    关系操作符生成 boolean 结果

    ’==‘/’!=‘适用于所有对象,比较的是对象的引用,就是说即使值相同,但是不同对象的话也是不同的。在比较不同的对象的相同值时,使用 equals() 方法。
    由于 equals() 的默认行为是比较引用,除非在自己的新类中覆盖 equals() 方法,否则不可能表现出我们希望的行为。这是重写 equals() 方法的意义。


    3.8 逻辑操作符

    与:&&
    或:||
    非:!
    逻辑操作符生成 boolean 结果

    在应该使用 String 值的地方使用 boolean 值,布尔值会自动装换为适当文本形式的 true/false(装箱)。

    短路:一旦能够明确无误的确认整个表达式,就不会在计算表达式剩余的部分。


    3.9 直接常量

    numbers + L --> long
    numbers + F --> float
    numbers + D --> double
    0x/0X + numbers --> 十六进制
    0 + numbers --> 八进制

    值得注意的是计算机中 e 代表10的幂次。


    3.10 按位操作符

    按位操作符用来操作整数积累数据类型和中的单个“比特”(bit),即二进制位。
    按位操作符会对两个参数中对应的位执行布尔代数运算。

    按位与:&
    按位或:|
    按位异或:^
    按位非:~

    按位操作符可与等号(=)联合使用。&=,!=,^=都是合法的。


    3.11 移位操作符

    操作二进制的“位”,只可以用来处理整数基本类型数据。

    • 左移<<:按操作符右侧指定的位数,将操作符左边的操作数左移动(低位补0)
    • 右移>>:按操作符右侧指定的位数,将操作符左边的操作数右移动(符号拓展,符号为正,高位插0;符号为负,高位插1)
    • 无符号右移>>>:无论正负,高位插0

    按位操作符可与等号(=)联合使用。<<=,>>=,>>>=都是合法的。


    3.12 三元操作符

    boolean-exp ? value0 : value1;
    

    3.13 字符串操作符 + 和 +=

    如果表达式以一个字符串开头,那么后续所有操作数都必须是字符串类型。


    3.14 使用操作符时常犯的错误

    多用括号不出错


    3.15 类型转换操作符

    执行类型转换,可以将希望得到的数据类型治愈圆括号内,放在要进行类型转换的值的左边

    • 窄化转换:编译器会强制进行转换
    • 扩展转换:新类型一定会容纳原来的类型的信息

    float/double --> int 总会进行截尾
    如果想要得到舍入的结果,需要调用 java.lang.Math 中的 round() 方法

    对基本类型执行算术运算或者按位运算,只要比 int 小,在运算前,这些值会自动转换为 int。
    float * double = double
    int + long = long


    3.16 Java 中没有 sizeof

    所有数据类型在任意机器上的大小都是相同的-->高可移植性

  • 相关阅读:
    nginx
    git命令
    mysql的优化
    nginx下的负载均衡
    IO模式和IO多路复用
    回顾java基础—Java数据类型
    解决jdk1.8上编译dubbo失败
    KB,Kb单位换算,网络带宽中的Kbps和KB/s到底是什么意思? (注:B和b的区别)
    生成器函数_yield_yield from_send
    推导式_集合
  • 原文地址:https://www.cnblogs.com/chentnt/p/9791847.html
Copyright © 2020-2023  润新知