学习笔记--Java 运算符



Java 运算符

按照功能划分:

功能 运算符
算术运算符 +-*/++--%
关系运算符 <<=>>===!=
逻辑运算符 &&||&|!
位运算符 &|~^>>>>><<
赋值运算符 =+=-=*=/=%=
字符串连接符 +
条件运算符 ?:
其他运算符 instanceofnew

算术运算符

关于Java编程中运算符:算术运算符

运算符 作用
+ 相和
- 相减
* 相乘
/ 相除
% 求余
++ 自减
-- 自增
  • % 是求取余数,又称作【取模】
  • ++ 可以出现在变量前或后,运算后变量结果会增加 1 ,有两种使用i++,++i
    • i++:先做赋值运算,再对变量自增
    • ++i:先对变量自增,再做赋值运算
  • --++ 相似只不过变减少 1

注意:一个表达式当中有多个运算符,运算符有优先级、不确定的加小括号,优先级得到提升。不需要刻意去记忆运算符的优先级。

public class OperatorTest {
    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 k1 = 10;
        int m = k1 ++;

        System.out.println(k1);  // 11
        System.out.println(m);  // 10
        // 先做赋值运算,再对变量自增


        // ++ 出现在变量前
        int k2 = 10;
        int n = ++ k2;

        System.out.println(k2);  // 11
        System.out.println(n);  // 11
        // 先对变量自增,再做赋值运算
        System.out.println(n);

    }
}

关系运算符

关于Java编程中运算符:关系运算符

运算符 作用
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
  • 注意区别:= 是赋值运算符;== 是关系运算符。
  • 关系运算符的结果一定是布尔类型:true / false
public class OperatorTest {
    public static void main(String args[]) {

        // 关系运算符的结果
        System.out.println(10 > 1); // true
        System.out.println(10 < 1); // false
    }
}

逻辑运算符

关于Java编程中运算符:逻辑运算符

运算符 作用
& 逻辑与
| 逻辑或
! 逻辑非
^ 逻辑异或
&& 短路与
|| 短路或
  • 逻辑运算符要求两边的算子都是布尔类型,结果也是布尔类型
  • &&\|\|&\| 的区别,前者存在短路,短路与和短路或的执行效率更高(使用较多)
    • && 前面的算子为 false 则后面将不会执行
    • \|\| 前面的算子为 true 则后面将不会执行
public class OperatorTest {
    public static void main(String args[]) {

        System.out.println(5 > 3 & 5 > 2);  // true
        System.out.println(5 > 3 & 5 > 6);  // false


        /*  短路现象    */
        int a = 10;

        // 使用 &&
        System.out.println(false && (a++ > 1)); // false
        System.out.println(a); // 10

        // 使用 &
        System.out.println(false & (a++ > 1)); // false
        System.out.println(a); // 11
    }
}

位运算【略】

  • 位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
运算符 作用
& 如果相对应位都是1,则结果为1,否则为0
| 如果相对应位都是 0,则结果为 0,否则为 1
~ 按位取反运算符翻转操作数的每一位,即0变成1,1变成0
^ 如果相对应位值相同,则结果为0,否则为1
>> 按位右移运算符。左操作数按位右移右操作数指定的位数
<< 按位左移运算符。左操作数按位左移右操作数指定的位数
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充

赋值运算符

  • 赋值类运算符包括两种:

    • 基本运算符:= 简单的赋值运算符,将右操作数的值赋给左侧操作数
    • 扩展运算符:+=-=*=/=%= 是对于算术运算符中部分内容的简化
  • 赋值类运算符的优先级:先执行等号右边的表达式,在进行赋值给左边的变量

  • 扩展运算符不改变运算结果的类型,使用时注意精度损失

public class OperatorTest {
    public static void main(String[] args) {

        // 基本的赋值运算符
        int i = 10;


        // 扩展运算符,对比
        i = i + 5;  // 15   先计算 i + 5 , 在赋值给 i
        i += 5;     // 20   可以理解为 “追加/累加”,效率高于 i = i + 5


//-------------------------------------------------------------


        // 10 没有超出byte范围,可以直接赋值
        byte b = 10;

        // b = b + 5;  编译错误
        /*  编译器只检查语法,不运行程序编译器
        编译器发现 b+5 的类型是 int 类型 ,b 变量的类型是 byte , 大容量向小容量转换需要强制类型转换符,所以编译错误     */
        b = (byte)(b + 5);  // 纠正

        byte x = 10;
        x += 5; // 编译通过,所以 x += 5 不等同于 x = x + 5
        System.out.println(x);   // 15

        byte z = 0;
        z += 128;   // 等同于 z = (byte)(z + 128)
        System.out.println(x);   // -128【精度损失】
    }
}

字符串连接符

  • 关于 + 运算符:

    • 加法运算,求和
    • 字符串连接运算
  • 只要 + 运算符两边有一个数据是字符串类型,则是字符串连接运算,运算结果为字符串类型

  • 在一个表达式中出现多个 + ,在没有小括号的前提下,从左向右

public class OperatorTest {
    public static void main(String[] args) {

        System.out.println(10 + 20 + "30"); // "3030"


        int a1 = 10;
        int a2 = 20;

        // 要求以动态的方式输出 "10 + 20 = 30"
        System.out.println(a1 + " + " + a2 + " = " + (a1 + a2));    // 10 + 20 = 30
    }
}

三元运算符

  • ?:的语法:

    • 布尔表达式 ? 表达式 : 表达式
  • 当布尔表达式结果为:

    • true 执行 : 前的表达式
    • false 执行 : 后的表达式
public class OperatorTest {
    public static void main(String[] args) {

        boolean sex = false;
        char ch = sex ? '男' : '女';
        System.out.println(ch);  // '女'

        sex = true;
        ch = sex ? '男' : '女';
        System.out.println(ch);  // '男'

    }
}


基础章


合集总目录:学习笔记--Java合集

posted @ 2022-01-21 14:33  sha0dow  阅读(37)  评论(0编辑  收藏  举报