04-运算符

一叶浮萍归大海,人生何处不相逢。

1. 运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

2. 算术运算符

对数值类型的变量进行运算的。

算术运算符表

运算符作用
加法运算符(+用于将两个数值相加
减法运算符(-用于从第一个数值中减去第二个数值
乘法运算符(*用于将两个数值相乘        
除法运算符(/用于将第一个数值除以第二个数值
取余运算符(%用于计算第一个数值除以第二个数值的余数
自增运算符(++用于将变量的值增加1
自减运算符(--用于将变量的值减少1

简单示例

public class ArithmeticOperators {
    public static void main(String[] args) {
        int a = 5;
        int b = 10;

        int sum = a + b;    // 加法
        int difference = a - b; // 减法
        int product = a * b; // 乘法
        int quotient = b / a; // 除法
        int remainder = b % a; // 取余

        a++; // 自增
        b--; // 自减

        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + difference);
        System.out.println("Product: " + product);
        System.out.println("Quotient: " + quotient);
        System.out.println("Remainder: " + remainder);
        System.out.println("a after increment: " + a);
        System.out.println("b after decrement: " + b);
    }
}

输出结果:

Sum: 15
Difference: -5
Product: 50
Quotient: 2
Remainder: 0
a after increment: 6
b after decrement: 9

前缀自增和后缀自增的区别

简单示例

  public static void main(String[] args) {
        int x = 5;
        int y = ++x;
        System.out.println("前缀自增:" + x);
        System.out.println("前缀自增:" + y);

        int a = 5;
        int b = a++;
        System.out.println("后缀自增:" + a);
        System.out.println("后缀自增:" + b);
    }

输出结果

前缀自增:6
前缀自增:6
后缀自增:6
后缀自增:5

区别

  • 前缀自增(++variable):先将变量的值增加1,然后返回增加后的值。
  • 后缀自增(variable++):先返回变量的当前值,然后再将变量的值增加1。 

3. 关系运算符(比较运算符)

介绍

  • 关系运算符的结果都是boolean型,也就是说要么都是true,要么都是false
  • 关系表达式,经常用在if结构的条件中或循环结构的条件中

关系运算符表

运算符作用
大于 (>)如果左边的值大于右边的值,则结果为true
小于 (<)如果左边的值小于右边的值,则结果为true
大于等于 (>=)如果左边的值大于或等于右边的值,则结果为true
小于等于 (<=)如果左边的值小于或等于右边的值,则结果为true
等于 (==)如果两个操作数的值相等,则结果为true。对于基本数据类型,它比较的是值;对于引用类型,它比较的是对象的引用是否相同,而不是内容是否相同
不等于 (!=)如果两个操作数的值不相等,则结果为true
instanceof对象是否是指定类型的实例或其子类的实例。如果是,则结果为true;否则为false

简单示例

int a = 10;
int b = 20;

boolean isGreater = a > b; // false,因为10不大于20
boolean isEqual = a == b; // false,因为10不等于20
boolean isNotEqual = a != b; // true,因为10不等于20

4. 逻辑运算符

介绍

用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。

逻辑运算符表

运算符作用
&&(短路与)如果左侧的操作数为false,则不会计算右侧的操作数,直接返回false。如果左侧为true,则继续计算右侧,并根据两侧的结果返回truefalse
&(非短路与)无论左侧的操作数是什么,都会计算右侧的操作数,并根据两侧的结果返回truefalse
||(短路或)如果左侧的操作数为true,则不会计算右侧的操作数,直接返回true。如果左侧为false,则继续计算右侧,并根据两侧的结果返回truefalse
|(非短路或)无论左侧的操作数是什么,都会计算右侧的操作数,并根据两侧的结果返回truefalse        
!(逻辑非)用于反转操作数的布尔值。如果操作数为true,则结果为false;如果操作数为false,则结果为true
^(逻辑异或)如果两个操作数的布尔值不同,则结果为true;如果相同,则结果为false
?(三目)运算符)它的格式为条件 ? 表达式1 : 表达式2。如果条件为true,则结果为表达式1的值;如果条件为false,则结果为表达式2的值

注意:短路逻辑运算符(&&||)在实际编程中经常被使用,因为它们可以提高效率,特别是在涉及复杂条件判断时。当使用短路逻辑运算符时,如果左侧的操作数已经足够确定整个表达式的值,那么右侧的操作数将不会被评估,这可以避免不必要的计算或潜在的错误。

简单示例

public class LogicalOperators {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        // 逻辑与(AND)
        boolean andResult = a && b; // false,因为b为false
        boolean andResult2 = a & b; // false,因为b为false

        // 逻辑或(OR)
        boolean orResult = a || b; // true,因为a为true
        boolean orResult2 = a | b; // true,因为a为true

        // 逻辑非(NOT)
        boolean notResult = !a; // false,因为a为true

        // 逻辑异或(XOR)
        boolean xorResult = a ^ b; // true,因为a和b的布尔值不同

        // 条件(三目)运算符
        boolean condition = true;
        String result = condition ? "True" : "False"; // result的值为"True"

        // 输出结果
        System.out.println("AND with &&: " + andResult);
        System.out.println("AND with &: " + andResult2);
        System.out.println("OR with ||: " + orResult);
        System.out.println("OR with |: " + orResult2);
        System.out.println("NOT: " + notResult);
        System.out.println("XOR: " + xorResult);
        System.out.println("Conditional (ternary) operator: " + result);
    }
}

输出结果

AND with &&: false
AND with &: false
OR with ||: true
OR with |: true
NOT: false
XOR: true
Conditional (ternary) operator: True

5. 赋值运算符

介绍

将某个运算后的值,赋给指定的变量。

赋值运算符表

运算符作用
简单赋值运算符 (=)最基本的赋值运算符,它将右侧表达式的值赋给左侧的变量
算术赋值运算符 (+=-=*=/=%=)将算术运算的结果赋给左侧的变量
位运算赋值运算符 (&=|=^=<<=>>=>>>=)将位运算的结果赋给左侧的变量
字符串连接赋值运算符 (+= 用于字符串连接)+=运算符用于字符串时,它将右侧的字符串连接到左侧的字符串的末尾

简单示例

int x = 5; // 将整数值5赋给变量x


int x = 5;
x += 3;     // 等价于 x = x + 3;  // x的值现在是8
x -= 2;     // 等价于 x = x - 2;  // x的值现在是6
x *= 4;     // 等价于 x = x * 4;  // x的值现在是24
x /= 2;     // 等价于 x = x / 2;  // x的值现在是12(如果是整数除法)
x %= 3;     // 等价于 x = x % 3;  // x的值现在是0(12除以3的余数是0)


int x = 5;  // 二进制表示为 101
x &= 3;     // 二进制表示为 011, 结果为 1 (101 AND 011 = 001)
x |= 6;     // 二进制表示为 110, 结果为 7 (101 OR 110 = 111)
x ^= 4;     // 二进制表示为 100, 结果为 3 (101 XOR 100 = 001)
x <<= 1;    // 左移一位, 结果为 6 (101 << 1 = 1010, 即十进制的10)
x >>= 1;    // 右移一位, 结果为 3 (1010 >> 1 = 101, 即十进制的5)
x >>>= 1;   // 无符号右移一位, 结果为 2 (1010 >>> 1 = 010, 即十进制的2)


String str = "Hello";
str += " World"; // 等价于 str = str + " World"; // str的值现在是"Hello World"

注意:赋值运算符的左侧必须是一个可以赋值的变量,而右侧可以是一个表达式、常量或另一个变量的值。在Java中,赋值运算符是从右到左的结合性,这意味着在连续的赋值中,右侧的表达式会首先被计算。

6. 运算符优先级

不用背,不用背,不用背,多用自然就知道了。

优先级从高到低的列表

后缀运算符++--

一元运算符+-!++--

乘法运算符*/%

加法运算符+-

移位运算符<<>>>>>

关系运算符<<=>>=

相等运算符==!=

按位与运算符&

按位异或运算符^

按位或运算符|

逻辑与运算符&&(短路与)

逻辑或运算符||(短路或)

条件运算符? :

赋值运算符=+=-=*=/=%=&=^=|=<<=>>=>>>=

7. 标识符的命名规则和规范

命名规则

  1. 标识符可以由字母、数字、美元符号($) 和 下划线(_) 组成。
  2. 标识符的第一个字符必须是字母、美元符号($) 或 下划线(_),不能以数字开头。
  3. 标识符不能是Java关键字和保留字。关键字是Java语言预定义的具有特定含义的单词,如"if"、"for"、"class"等。保留字是Java中未被使用,但被保留起来以备将来使用的单词。
  4. 标识符应具有描述性,以便其他开发人员能够理解其用途。

命名规范

  1. 类名:首个字母必须大写,多个单词组成的类名,每个单词的首字母都要大写。
  2. 方法名:一般首个字母小写(构造方法例外),多个单词组成的方法名,后续每个单词的首字母大写。
  3. 变量名:命名规则同方法名。
  4. 常量名:所有的字母都需要大写,单词与单词之间用下划线隔开。
  5. 推荐使用驼峰命名法作为标识符的命名风格。驼峰命名法包括大驼峰命名法(Pascal Case)和小驼峰命名法(Camel Case)。

注意:标识符在Java中是区分大小写的,即大写字母和小写字母是不同的标识符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值