Java 知识量:11 - 45 - 220
Java运算符是对常量和变量进行操作的符号,可以用于算术运算、比较运算和逻辑运算等。
算术运算符:包括加(+)、减(-)、乘(*)、除(/)、取余(%)、递增(++)、递减(--)等操作。其中,除法运算符“/”在整数相除时得到整数结果,若想得到小数结果,需要将操作数变为浮点数类型。取余运算符“%”用于获取除法操作的余数。
比较运算符:用于比较两个变量的值,结果为真或假。例如,等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等。
逻辑运算符:用于进行逻辑运算,如与(&&)、或(||)、非(!)等。
位运算符:用于对二进制位进行操作,如按位与(&)、按位或(|)、按位非(~)等。
三目运算符:也称为条件运算符,用于根据条件判断返回不同的值,格式为:条件表达式 ? 值1 : 值2。
赋值运算符:如等于(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)等,用于将右侧操作数的值赋给左侧操作数。注意:赋值运算符是从右往左看的。
在实际编程中,需要根据具体的运算需求选择正确的运算符,并且要注意运算符的优先级和结合性,以确保计算结果的正确性。
Java 运算符的优先级和结合性与大多数其他编程语言类似。以下是一些主要的运算符和它们的优先级及结合性,从高到低:
单目运算符(++, --, +, -, ~, !):从右向左。
强制类型转换运算符((type)):从右向左。
乘法 / 除法 / 取余(*, /, %):从左向右。
加法 / 减法(+, -):从左向右。
移位运算符(<<, >>, >>>):从左向右。
关系运算符(<, <=, >, >=, instanceof):从左向右。
等于不等于运算符(==, !=):从左向右。
位与运算符(&):从左向右。
位异或运算符(^):从左向右。
位或运算符(|):从左向右。
逻辑与运算符(&&):从左向右。
逻辑或运算符(||):从左向右。
三元运算符(? :):从右向左。
赋值运算符(=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=):从右向左。
注意:这只是通常情况下的优先级。在某些情况下,例如使用括号或执行特定的操作,这些规则可能会有所不同。在编写代码时,为了避免可能的混淆,最好明确地使用括号来指示你的意图。
Java 中的算术运算符用于执行基本的数学运算。以下是一些常见的 Java 算术运算符:
加法运算符:+
减法运算符:-
乘法运算符:*
除法运算符:/
取余运算符:%
递增运算符:++
递减运算符:--
这些运算符的使用示例如下:
int a = 10; int b = 5; int sum = a + b; // 加法 int diff = a - b; // 减法 int product = a * b; // 乘法 int quotient = a / b; // 除法 int remainder = a % b; // 取余 a++; // 递增 b--; // 递减
注意:除法和取余运算符在处理整数时会舍去小数部分,而在处理浮点数时会保留小数部分。如果要执行精确的浮点数计算,可以使用 double 类型。
此外,Java 还支持一些复合赋值运算符,如 +=、-=、*=、/=、%= 等,用于简化常见的算术操作。例如:
a += b; // 等同于 a = a + b; b -= a; // 等同于 b = b - a; product *= 2; // 等同于 product = product * 2; quotient /= 2; // 等同于 quotient = quotient / 2; remainder %= 2; // 等同于 remainder = remainder % 2;
在Java中,字符串连接可以通过几种不同的方式实现。
1、使用 + 运算符:
String str1 = "Hello"; String str2 = "World"; String str3 = str1 + " " + str2; System.out.println(str3); // 输出 "Hello World"
2、使用 concat() 方法:
String str1 = "Hello"; String str2 = "World"; String str3 = str1.concat(" ").concat(str2); System.out.println(str3); // 输出 "Hello World"
3、使用 StringBuilder 或 StringBuffer:
StringBuilder sb = new StringBuilder(); sb.append("Hello"); sb.append(" "); sb.append("World"); String str = sb.toString(); System.out.println(str); // 输出 "Hello World"
注意:虽然使用 + 运算符和 concat() 方法可以简化代码,但在性能上并不理想。因为每次连接操作都会创建一个新的字符串对象。当需要连接大量的字符串时,推荐使用 StringBuilder 或 StringBuffer,因为它们可以在一个单一的字符串对象上进行操作,从而提高性能。
Java中的比较运算符用于比较两个值的大小或相等性。以下是Java中的比较运算符:
等于运算符(==):比较两个值是否相等。
不等于运算符(!=):比较两个值是否不相等。
大于运算符(>):比较左边的值是否大于右边的值。
小于运算符(<):比较左边的值是否小于右边的值。
大于等于运算符(>=):比较左边的值是否大于或等于右边的值。
小于等于运算符(<=):比较左边的值是否小于或等于右边的值。
这些运算符可以用于比较基本数据类型(如int、double、char等)和对象类型(如String、Date等)。但是,对于对象类型的比较,必须使用equals()方法进行相等性比较,而不是使用==运算符。
Java中的逻辑运算符用于将布尔表达式组合起来,形成更复杂的逻辑表达式。以下是Java中的逻辑运算符:
逻辑与运算符(&&):如果两边的表达式都为true,则结果为true。
逻辑或运算符(||):如果两边的表达式中至少有一个为true,则结果为true。
逻辑非运算符(!):将表达式的结果取反。
这些运算符可以用于构建复杂的条件语句,控制程序的执行流程。同时,还可以与关系运算符(如比较运算符)结合使用,实现更丰富的逻辑判断。
Java中的位运算符和位移运算符用于操作二进制位。以下是Java支持的位运算符和位移运算符:
位与运算符(&):将两个二进制数的每一位进行与操作,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。
位或运算符(|):将两个二进制数的每一位进行或操作,如果两个相应的二进制位都为0,则该位的结果值为0,否则为1。
位异或运算符(^):将两个二进制数的每一位进行异或操作,如果两个相应的二进制位不同,则该位的结果值为1,否则为0。
位非运算符(~):将一个二进制数的每一位进行非操作,即取反操作,将1变为0,将0变为1。
左移运算符(<<):将一个二进制数向左移动指定的位数,并在低位补零。
右移运算符(>>):将一个二进制数向右移动指定的位数,移动后高位补零或补符号位(即正数补零,负数补符号位)。
无符号右移运算符(>>>):将一个二进制数向右移动指定的位数,移动后高位补零。
这些运算符可以直接用于整数类型(byte、short、int、long)的数值上。例如:
int a = 0b10101010; // 二进制表示 int b = 0b01010101; // 二进制表示 int c = a & b; // 位与运算,结果为 0b00000000 int d = a | b; // 位或运算,结果为 0b11111111 int e = a ^ b; // 位异或运算,结果为 0b11111111 int f = ~a; // 位非运算,结果为 0b01010101 int g = a << 2; // 左移2位,结果为 0b1010101000 int h = a >> 2; // 右移2位,结果为 0b00101010 int i = a >>> 2; // 无符号右移2位,结果为 0b00101010
注意:位运算和位移运算只适用于整数类型,不能用于浮点数类型(float、double)。
Java中的赋值运算符用于将右侧的值赋给左侧的变量。以下是一些Java赋值运算符:
=:将右侧的值赋给左侧的变量。
+=:将右侧的值加到左侧的变量上,然后将结果赋给左侧的变量。
-=:从左侧的变量中减去右侧的值,然后将结果赋给左侧的变量。
*=:将左侧的变量乘以右侧的值,然后将结果赋给左侧的变量。
/=:将左侧的变量除以右侧的值,然后将结果赋给左侧的变量。
%=:将左侧的变量对右侧的值取模,然后将结果赋给左侧的变量。
&=:将左侧的变量与右侧的值进行按位与运算,然后将结果赋给左侧的变量。
|=:将左侧的变量与右侧的值进行按位或运算,然后将结果赋给左侧的变量。
^=:将左侧的变量与右侧的值进行按位异或运算,然后将结果赋给左侧的变量。
>>=:将左侧的变量向右移动指定的位数,然后将结果赋给左侧的变量。
<<=:将左侧的变量向左移动指定的位数,然后将结果赋给左侧的变量。
例如,以下是一些使用赋值运算符的示例:
int a = 10; // 将10赋给变量a a += 5; // 将5加到变量a上,然后将结果赋给a a -= 2; // 从变量a中减去2,然后将结果赋给a a *= 3; // 将变量a乘以3,然后将结果赋给a a /= 2; // 将变量a除以2,然后将结果赋给a a %= 4; // 将变量a对4取模,然后将结果赋给a int b = 0b1010; // 将二进制数1010赋给变量b b &= 0b1100; // 将变量b与二进制数1100进行按位与运算,然后将结果赋给b b |= 0b0011; // 将变量b与二进制数0011进行按位或运算,然后将结果赋给b b ^= 0b1111; // 将变量b与二进制数1111进行按位异或运算,然后将结果赋给b int c = 0b1000; // 将二进制数1000赋给变量c c >>= 2; // 将变量c向右移动2位,然后将结果赋给c c <<= 3; // 将变量c向左移动3位,然后将结果赋给c
Java中的条件运算符(也称为三元运算符)用于在一个表达式中实现条件判断。
它的语法如下:
条件表达式 ? 表达式1 : 表达式2;
其中,条件表达式是一个返回布尔值的表达式。如果条件表达式的值为true,则执行表达式1;如果条件表达式的值为false,则执行表达式2。
例如,下面的代码展示了如何使用条件运算符来判断一个数字是否为正数:
int num = -5; String result = (num > 0) ? "正数" : "非正数"; System.out.println(result); // 输出 "非正数"
在上面的代码中,如果变量num的值大于0,则将字符串"正数"赋值给变量result;否则,将字符串"非正数"赋值给变量result。最后,打印变量result的值。
Java中的instanceof是一个二元操作符,用于测试一个对象是否是一个类的实例,或者说这个类是否是对象的超类或者接口。
它的语法是:
object instanceof ClassName
其中,object是要测试的对象,ClassName是要测试的类名。
如果object是ClassName的实例,或者是ClassName的子类的实例,或者是实现了ClassName接口的类的实例,那么instanceof操作符返回true。否则,返回false。
例如,假设有一个Animal类和一个Dog类,Dog类是Animal类的子类。可以使用instanceof操作符来测试一个对象是否是Animal类的实例:
Animal animal = new Dog(); if (animal instanceof Animal) { System.out.println("animal is an instance of Animal"); }
这段代码会输出"animal is an instance of Animal",因为animal是Dog类的实例,而Dog类是Animal类的子类。
注意:在Java中,每个对象都是Object类的实例,因此,如果使用instanceof操作符测试一个对象是否是Object类的实例,那么结果总是true。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6