Java 基础-语法-运算符
概述
种类 | 举例 | 作用 |
---|---|---|
算术运算符 | + :加法- :减法* :乘法/ :除法% :取模(取余数) | 用于执行基本的数学运算 |
增量运算符 | ++ :递增-- :递减 | 用于递增或递减变量的值 |
赋值运算符 | = :赋值+= :加法赋值-= :减法赋值*= :乘法赋值/= :除法赋值%= :取模赋值 | 用于给变量赋值 |
比较运算符 | == :等于!= :不等于< :小于> :大于<= :小于或等于>= :大于或等于 | 用于比较两个值 |
逻辑运算符 | && :逻辑与(短路与)|| :逻辑或(短路或)! :逻辑非 | 用于执行逻辑运算 |
位运算符 | & :按位与| :按位或^ :按位异或~ :按位取反<< :左移位>> :右移位>>> :无符号右移位 | 用于对二进制位执行操作 |
条件运算符(三元运算符) | condition ? value1 : value2 | 用于在条件为真时返回一个值,否则返回另一个值 |
详解
算术运算符
Java 的算术运算符用于执行基本的数学运算。以下是一些算术运算符的示例:
int a = 10;
int b = 3;// 加法
int sum = a + b; // 结果是 13// 减法
int difference = a - b; // 结果是 7// 乘法
int product = a * b; // 结果是 30// 除法
int quotient = a / b; // 结果是 3 (整数相除会截断小数部分)// 取模(取余数)
int remainder = a % b; // 结果是 1// 带有小数的算术运算
double x = 10.5;
double y = 3.0;// 加法
double sumDouble = x + y; // 结果是 13.5// 减法
double differenceDouble = x - y; // 结果是 7.5// 乘法
double productDouble = x * y; // 结果是 31.5// 除法
double quotientDouble = x / y; // 结果是 3.5
增量运算符
Java 中的增量运算符用于递增或递减变量的值。主要有两种增量运算符:递增运算符 ++
和递减运算符 --
。这些运算符可用于不同数据类型的变量,如整数、浮点数和字符。以下是它们的原理和示例说明:
int x = 5;
int y = x++; // 先将 x 赋值给 y,然后递增 x
System.out.println("x = " + x); // 输出 6
System.out.println("y = " + y); // 输出 5int a = 8;
int b = --a; // 先递减 a,然后将结果赋值给 b
System.out.println("a = " + a); // 输出 7
System.out.println("b = " + b); // 输出 7
- 前置递增/递减运算符(
++var
或--var
)首先递增或递减变量的值,然后返回新的值。 - 后置递增/递减运算符(
var++
或var--
)首先返回变量的当前值,然后再递增或递减变量的值。
递增和递减运算符通常用于循环、条件语句和其他控制结构中,以方便地增加或减小计数器或变量的值。注意,它们可以对不同类型的变量(整数、浮点数、字符等)使用,并具有不同的行为。在实际编程中,要根据需要选择适当的递增或递减运算符来操作变量。
赋值运算符
赋值运算符用于给变量赋予特定的值。在Java中,有多种赋值运算符,它们用于执行不同类型的赋值操作。以下是一些常见的赋值运算符的示例:
int x = 5; // 将5赋给变量xint count = 10;
count += 3; // 等效于 count = count + 3; 结果是 count 现在为 13double price = 100.0;
price -= 25.0; // 等效于 price = price - 25.0; 结果是 price 现在为 75.0int quantity = 6;
quantity *= 4; // 等效于 quantity = quantity * 4; 结果是 quantity 现在为 24int total = 100;
total /= 5; // 等效于 total = total / 5; 结果是 total 现在为 20int remainder = 15;
remainder %= 7; // 等效于 remainder = remainder % 7; 结果是 remainder 现在为 1
比较运算符
比较运算符用于比较两个值,通常返回一个布尔值(true
或 false
)来表示比较的结果。以下是一些常见的比较运算符以及示例:
int a = 5;
int b = 5;
boolean isEqual = (a == b); // 结果是 trueint x = 7;
int y = 3;
boolean isNotEqual = (x != y); // 结果是 trueint m = 10;
int n = 15;
boolean isLessThan = (m < n); // 结果是 truedouble p = 8.0;
double q = 5.0;
boolean isGreaterThan = (p > q); // 结果是 trueint c = 5;
int d = 5;
boolean isLessOrEqual = (c <= d); // 结果是 trueint e = 7;
int f = 5;
boolean isGreaterOrEqual = (e >= f); // 结果是 true
逻辑与运算符
逻辑运算符用于执行布尔逻辑运算,通常用于组合多个布尔表达式的结果。以下是一些常见的逻辑运算符以及示例:
boolean x = true;
boolean y = false;
boolean resultAnd = (x && y); // 结果是 falseboolean a = true;
boolean b = false;
boolean resultOr = (a || b); // 结果是 trueboolean p = true;
boolean resultNotP = !p; // 结果是 false
位运算符
位运算符用于对二进制位执行操作,通常用于处理整数数据的各个位。以下是一些常见的位运算符以及示例:
**按位与运算符 ** &
:将两个操作数的每个位进行与运算,只有在两个位都为 1 时,结果才为 1。
int a = 5; // 二进制表示为 0101
int b = 3; // 二进制表示为 0011
int bitwiseAnd = a & b; // 结果是 0001,即 1
**按位或运算符 ** |
:将两个操作数的每个位进行或运算,只要两个位中至少有一个为 1,结果就为 1。
int x = 5; // 二进制表示为 0101
int y = 3; // 二进制表示为 0011
int bitwiseOr = x | y; // 结果是 0111,即 7
**按位异或运算符 ** ^
:将两个操作数的每个位进行异或运算,只有当两个位不相同时,结果才为 1。
int m = 5; // 二进制表示为 0101
int n = 3; // 二进制表示为 0011
int bitwiseXor = m ^ n; // 结果是 0110,即 6
**按位取反运算符 ** ~
:反转操作数的每个位,0 变为 1,1 变为 0。
int p = 5; // 二进制表示为 0000 0000 0000 0000 0000 0000 0000 0101
int bitwiseNot = ~p; // 结果是 1111 1111 1111 1111 1111 1111 1111 1010,即 -6
**左移位运算符 ** <<
:将操作数的二进制位向左移动指定的位数,并在右侧用 0 填充。
int q = 6; // 二进制表示为 0110
int leftShift = q << 2; // 结果是 1100,即 12
**右移位运算符 ** >>
:将操作数的二进制位向右移动指定的位数,带符号地扩展左侧的位。带符号的意思是,如果原数是正数,则在左侧补充 0,如果原数是负数,则在左侧补充 1。
int a = 8; // 二进制 0000 1000
int result = a >> 1; // 结果是 4,二进制 0000 0100int b = -8; // 二进制 1111 1000
int result = b >> 1; // 结果是 -4,二进制 1111 1100
**无符号右移位运算符 ** >>>
:将操作数的二进制位向右移动指定的位数,不带符号地扩展左侧的位。这意味着无论原数是正数还是负数,都在左侧补充 0。
int c = 8; // 二进制 0000 1000
int result = c >>> 1; // 结果是 4,二进制 0000 0100int d = -8; // 二进制 1111 1111 1111 1111 1111 1111 1111 1000
int result = d >>> 1; // 结果是 2147483644,二进制0111 1111 1111 1111 1111 1111 1111 1100
位运算符通常用于对位级别的数据操作,特别是在需要执行位操作的底层编程任务中,如位掩码、位控制等。它们通常用于处理整数数据,而不是浮点数。