Java中的运算符分为以下几种
- 算术运算符:用于执行基本数学计算,例如加法(+)、减法(-)、乘法(*)、除法(/)和取模(%)。这些运算符的操作方式与数学中的操作类似。在进行除法和取模运算时,需要注意除数不能为0,否则会抛出异常。
- 关系运算符:用于比较两个值之间的关系,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。这些运算符返回一个布尔值,即true或false。
- 逻辑运算符:用于连接多个布尔表达式,包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑与和逻辑或运算符可以用于组合多个条件,而逻辑非用于反转布尔值。
- 位运算符:在二进制级别上操作数值,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。位运算符在进行底层编程或优化时非常有用。例如,右移运算符可以将数字除以2的n次方。
- 赋值运算符:用于给变量赋值,包括基本的赋值运算符(=)和复合赋值运算符(+=, -=, *=, /=等)。复合赋值运算符将运算和赋值结合在一起,使代码更加简洁。
- 其他运算符:包括条件运算符(?:)、类型比较运算符(instanceof)和类型转换运算符等。
算术运算符
算术运算符包含:加法(+)、减法(-)、乘法(*)、除法(/)和取模(%);
- 加法(+)
对于生活中我们最常见的算法就是1+2等于多少?我们是很快速得计算出结果,当时如果使用java编写的话,要怎么编写这个1+2的结果,接下来我们使用个示例来说明。
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int one=1;
//声明2
int two =2;
//1+2的结果值
int three = one+two;
//1+2 输出结果是3
System.out.println(three);
}
}
- 减法(-)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int one=1;
//声明2
int two =2;
//2-1的结果值
int result = two+one;
//2-1 输出结果是1
System.out.println(result);
}
}
- 乘法(*)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int one=1;
//声明2
int two =2;
//2 * 1的结果值
int result = two * one;
//2 * 1 输出结果是2
System.out.println(result);
}
}
- 除法(/)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int one=1;
//声明2
int two =2;
//2 / 1的结果值
int result = two / one;
//2 / 1 输出结果是2
System.out.println(result);
}
}
- 取模(%)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//2 % 1的结果值
int result = number % 100;
//10 取模 100 输出结果是10
System.out.println(result);
}
}
关系运算符
关系运算符执行后返回一个布尔值,即true或false。
- 等于(==)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 == 10的结果值
boolean result = number == otherNumber;
//输出结果是true
System.out.println(result);
}
}
- 不等于(!=)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 不等于 10的结果值是false
boolean result = number != otherNumber;
//输出结果是false
System.out.println(result);
}
}
- 大于(>)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 大于 10的结果值是false
boolean result = number > otherNumber;
//输出结果是false
System.out.println(result);
}
}
- 小于(<)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 小于 10的结果值是false
boolean result = number < otherNumber;
//输出结果是false
System.out.println(result);
}
}
- 大于等于(>=)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 大于等于 10的结果值是true
boolean result = number >= otherNumber;
//输出结果是true
System.out.println(result);
}
}
- 小于等于(<=)
public class OperatorDemo {
public static void main(String[] args) {
//声明1
int number = 10;
//声明另外一个数字
int otherNumber = 10;
//10 小于等于 10的结果值是true
boolean result = number <= otherNumber;
//输出结果是true
System.out.println(result);
}
}
逻辑运算符
用于连接多个布尔表达式,包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑与和逻辑或运算符可以用于组合多个条件,而逻辑非用于反转布尔值。
- 逻辑与(&&)
Java中的逻辑与运算符是&&,它用于将两个布尔值进行逻辑与运算。逻辑与运算符是一种二元运算符,这意味着它需要两个操作数来完成运算。在Java中,逻辑与运算符将两个布尔值进行比较,如果两个操作数都为true,则结果为true;否则,结果为false。
public class LogicalAndExample {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
boolean result = a && b; // 逻辑与运算符
System.out.println("Result: " + result); // 输出结果为false
}
}
- 逻辑或(||)
Java中的逻辑或运算符是两个竖线||。当两个操作数中至少有一个为true时,逻辑或的结果就为true。如果两个操作数都是false,那么结果就是false。
public class LogicalOrExample {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
// 使用逻辑或运算符
boolean result = a || b;
System.out.println("Result: " + result); // 输出结果为true
}
}
- 逻辑非(!)
逻辑非运算符是一种单目运算符,这意味着它只需要一个操作数来完成运算。在Java中,逻辑非运算符会将其操作数的布尔值取反。如果操作数为true,则逻辑非的结果为false;反之,如果操作数为false,则结果为true。
public class LogicalNotExample {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
// 使用逻辑非运算符
boolean result1 = !a; // 结果为false
boolean result2 = !b; // 结果为true
System.out.println("Result 1: " + result1);
System.out.println("Result 2: " + result2);
}
}
位运算符
在二进制级别上操作数值,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。位运算符在进行底层编程或优化时非常有用。例如,右移运算符可以将数字除以2的n次方。
- 按位与(&)
Java中的按位与运算符是"&",用于执行二进制位的“与”操作。按位与运算符(&)是一种二元运算符,它对两个数的每一位进行逻辑与操作。按位与的运算规则是:只有当两个相应的二进制位都为1时,结果位才为1;如果任一位为0,则结果位为0。例如,对于数字3和5,它们的二进制表示分别是0000 0011和0000 0101,按位与的结果是0000 0001,即十进制的1。
public class BitwiseAndExample {
public static void main(String[] args) {
int a = 5; // 二进制表示为0000 0101
int b = 3; // 二进制表示为0000 0011
// 使用按位与运算符进行逻辑与操作
int result = a & b; // 结果为0000 0001,即十进制的1
System.out.println("Result: " + result);
}
}
- 按位或(|)
Java中的按位或运算符是"|",用于执行二进制位的“或”操作。按位或运算符(|)是一种二元运算符,它对两个数的每一位进行逻辑或操作。按位或的运算规则是:只要两个相应的二进制位中有一个为1,结果位就为1;如果两个位都是0,则结果位为0。例如,对于数字5和3,它们的二进制表示分别是0000 0101和0000 0011,按位或的结果是0000 0111,即十进制的7。
public class BitwiseOrExample {
public static void main(String[] args) {
int a = 5; // 二进制表示为0000 0101
int b = 3; // 二进制表示为0000 0011
// 使用按位或运算符进行逻辑或操作
int result = a | b; // 结果为0000 0111,即十进制的7
System.out.println("Result: " + result);
}
}
- 按位异或(^)
Java中的按位异或运算符是"^",用于执行二进制位的“异或”操作。按位异或运算符(^)是一种二元运算符,它对两个数的每一位进行异或操作。异或的运算规则是:如果两个相应的二进制位相同,则结果为0;如果两个相应的二进制位不同,则结果为1。例如,对于数字5和3,它们的二进制表示分别是0000 0101和0000 0011,按位异或的结果是0000 0110,即十进制的6。
public class BitwiseXorExample {
public static void main(String[] args) {
int a = 5; // 二进制表示为0000 0101
int b = 3; // 二进制表示为0000 0011
// 使用按位异或运算符进行逻辑异或操作
int result = a ^ b; // 结果为0000 0110,即十进制的6
System.out.println("Result: " + result);
}
}
- 左移(<<)
Java中的左移运算符是"<<",用于将一个数的二进制位向左移动指定的位数。左移运算符(<<)是一种二元运算符,它对一个数进行左移操作。左移的运算规则是:将原数的二进制位向左移动指定的位数,右边空出的位用0填充。例如,对于数字5和3,它们的二进制表示分别是0000 0101和0000 0011,将它们分别左移2位后得到的结果分别为0001 0100和0000 0011,即十进制的20和3。
public class Main {
public static void main(String[] args) {
int number = 5; // 二进制表示为0000 0101
int shift = 2;
int result = number << shift; // 结果为0001 0100,即十进制的20
System.out.println("Result: " + result);
}
}
在这个例子中,我们定义了一个整数变量number,它的值为5。然后,我们使用左移运算符(<<)将number向左移动了2位,并将结果存储在变量result中。最后,我们将结果打印出来。
- 右移(>>)
Java中的右移运算符(>>)用于将二进制数向右移动指定的位数。右移操作相当于将二进制数除以2的指定次方,同时在左侧补0。
public class RightShiftExample {
public static void main(String[] args) {
int num = 8; // 二进制表示为 0000 1000
int result = num >> 1; // 右移一位,结果为 0000 0100,即十进制的4
System.out.println("右移后的结果为: " + result);
}
}
赋值运算符
用于给变量赋值,包括基本的赋值运算符(=)和复合赋值运算符(+=, -=, *=, /=等)。复合赋值运算符将运算和赋值结合在一起,使代码更加简洁。
- 赋值运算符(=)
Java中的赋值运算符(=)用于将一个值赋给变量
public class AssignmentOperatorExample {
public static void main(String[] args) {
int a = 5; // 将整数5赋值给变量a
double b = 3.14; // 将浮点数3.14赋值给变量b
char c = 'A'; // 将字符'A'赋值给变量c
boolean d = true; // 将布尔值true赋值给变量d
String str = "Hello, World!"; // 将字符串"Hello, World!"赋值给变量str
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("str = " + str);
}
}
在这个例子中,我们使用赋值运算符将不同类型的值分别赋给了变量a、b、c、d和str。然后,我们使用System.out.println()方法输出这些变量的值。
- 复合赋值运算符(+=)
Java中的+=运算符是一个复合赋值运算符,用于将右侧的值加到左侧的变量上,并将结果赋给左侧的变量
public class CompoundAssignmentOperatorExample {
public static void main(String[] args) {
int a = 5;
a += 3; // 等同于 a = a + 3;
System.out.println(a); // 输出8
double b = 2.5;
b += 1.5; // 等同于 b = b + 1.5;
System.out.println(b); // 输出4.0
String str = "Hello";
str += ", World!"; // 等同于 str = str + ", World!";
System.out.println(str); // 输出"Hello, World!"
}
}
在这个例子中,我们使用+=运算符将不同的值添加到变量a、b和str上,并将结果赋回给相应的变量。然后,我们使用System.out.println()方法输出这些变量的值。
- 复合赋值运算符(-=)
Java中的"-="运算符是一个复合赋值运算符,用于将右侧的值减去左侧的变量,并将结果赋给左侧的变量。
public class CompoundAssignmentOperatorExample {
public static void main(String[] args) {
int a = 5;
a -= 3; // 等同于 a = a - 3;
System.out.println(a); // 输出2
double b = 2.5;
b -= 1.5; // 等同于 b = b - 1.5;
System.out.println(b); // 输出1.0
String str = "Hello";
str -= ", World!"; // 等同于 str = str - ", World!";
System.out.println(str); // 输出"Hello"
}
}
在这个例子中,我们使用"-="运算符将不同的值从变量a、b和str中减去,并将结果赋回给相应的变量。然后,我们使用System.out.println()方法输出这些变量的值。
- 复合赋值运算符(*=)
Java中的"*="运算符是一个复合赋值运算符,用于将右侧的值乘以左侧的变量,并将结果赋给左侧的变量。
public class CompoundAssignmentOperatorExample {
public static void main(String[] args) {
int a = 5;
a *= 3; // 等同于 a = a * 3;
System.out.println(a); // 输出15
double b = 2.5;
b *= 1.5; // 等同于 b = b * 1.5;
System.out.println(b); // 输出3.75
String str = "Hello";
str *= 2; // 等同于 str = str + str;
System.out.println(str); // 输出"HelloHello"
}
}
在这个例子中,我们使用"*="运算符将不同的值乘以变量a、b和str,并将结果赋回给相应的变量。然后,我们使用System.out.println()方法输出这些变量的值。
- 复合赋值运算符(/=)
Java中的"/="运算符是一个复合赋值运算符,用于将左侧变量除以右侧的值,并将结果赋给左侧的变量。
public class CompoundAssignmentOperatorExample {
public static void main(String[] args) {
int a = 10;
a /= 2; // 等同于 a = a / 2;
System.out.println(a); // 输出5
double b = 4.0;
b /= 2.0; // 等同于 b = b / 2.0;
System.out.println(b); // 输出2.0
String str = "Hello";
str /= " World"; // 等同于 str = str + " World";
System.out.println(str); // 输出"Hello World"
}
}
在这个例子中,我们使用"/="运算符将不同的值除以变量a、b和str,并将结果赋回给相应的变量。然后,我们使用System.out.println()方法输出这些变量的值。
其他运算符
包括条件运算符(?:)、类型比较运算符(instanceof)和类型转换运算符等。
- 条件运算符(?:)
Java中的条件运算符(也称为三元运算符)是一种简洁的表示条件语句的方法。它的语法如下:
条件表达式 ? 表达式1 : 表达式2;
public class ConditionalOperatorExample {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println("The maximum value is: " + max);
}
}
在这个例子中,我们使用条件运算符来比较变量a和b的值,并将较大的值赋给变量max。如果a大于b,则整个条件运算符的值为a;否则,整个条件运算符的值为b。
- 类型比较运算符(instanceof)
Java中的类型比较运算符(instanceof)用于检查一个对象是否属于某个类或接口的实例。
public class Main {
public static void main(String[] args) {
String str = "Hello, world!";
boolean isString = str instanceof String;
System.out.println("str 是 String 类型的实例吗? " + isString); // 输出:str 是 String 类型的实例吗? true
Integer num = 42;
boolean isInteger = num instanceof Integer;
System.out.println("num 是 Integer 类型的实例吗? " + isInteger); // 输出:num 是 Integer 类型的实例吗? true
double dbl = 3.14;
boolean isDouble = dbl instanceof Double;
System.out.println("dbl 是 Double 类型的实例吗? " + isDouble); // 输出:dbl 是 Double 类型的实例吗? false
}
}
类型转换运算符
- 自动类型转换(Implicit Type Conversion)
int a = 10;
double b = a; // 自动类型转换
编译器会自动将较小的数据类型转换为较大的数据类型。例如,将 int 类型的变量转换为 double 类型时,int 类型的值会被转换为 double 类型的值。
- 显式类型转换
需要使用类型转换运算符将一个数据类型转换为另一个数据类型。例如,将 double 类型的变量转换为 int 类型时,可以使用强制类型转换运算符(如 (int))
double a = 10.5;
int b = (int) a; // 显式类型转换
- 包装类型转换
Java 提供了一些包装类,如 Integer、Double 等,它们分别对应基本数据类型 int、double。通过包装类型转换,可以将基本数据类型转换为对应的包装类对象,或者将包装类对象转换为对应的基本数据类型。
int a = 10;
Integer b = a; // 包装类型转换
double c = 10.5;
Double d = c; // 包装类型转换
- 字符串到数字的转换
使用 Integer.parseInt()、Double.parseDouble() 等方法将字符串转换为数字。
String str1 = "10";
int num1 = Integer.parseInt(str1); // 字符串到数字的转换
String str2 = "10.5";
double num2 = Double.parseDouble(str2); // 字符串到数字的转换
结语
本章节学习了Java中的运算符,
• 1、算术运算符:用于执行基本的数学运算,如加、减、乘、除等;
• 关系运算符:用于比较两个值之间的关系,如等于、不等于、大于、小于等。
• 布尔逻辑运算符:用于连接多个布尔表达式,如与、或、非等。
• 位运算符:用于对整数进行二进制位操作。
• 条件运算符:也称为三元运算符,用于根据一个布尔表达式的值来选择两个值中的一个。
• 赋值运算符:用于将一个值赋给变量。
• 算术运算符:用于执行基本的数学运算,如加、减、乘、除等。
• 类型比较运算符:用于检查一个对象是否属于某个类或接口的实例。