Java运算符是用于执行各种数学、逻辑和位运算的符号。Java中的运算符可以分为以下几类:
一、算术运算符
用于执行基本的数学运算,如加、减、乘、除和取模。常用的算术运算符包括+、-、*、/和%。
算数运算符详解
Java中的算术运算符包括加、减、乘、除、取模等,下面分别详细介绍。
1.1、加法运算符(+)
加法运算符用于将两个数相加,例如:
int a = 3;
int b = 5;
int c = a + b; // c的值为8
1.2、减法运算符(-)
减法运算符用于将第一个数减去第二个数,例如:
int a = 5;
int b = 3;
int c = a - b; // c的值为2
1.3、乘法运算符(*)
乘法运算符用于将两个数相乘,例如:
int a = 3;
int b = 5;
int c = a * b; // c的值为15
1.4、除法运算符(/)
除法运算符用于将第一个数除以第二个数,例如:
int a = 10;
int b = 3;
int c = a / b; // c的值为3
注意:如果两个数都是整型,那么结果也是整型,即会取整。
1.5、取模运算符(%)
取模运算符用于取第一个数除以第二个数的余数,例如:
int a = 10;
int b = 3;
int c = a % b; // c的值为1
1.6、自增运算符(++)
自增运算符用于将变量的值加1,例如:
int a = 3;
a++; // a的值为4
1.7、自减运算符(–)
自减运算符用于将变量的值减1,例如:
int a = 3;
a--; // a的值为2
注意:自增和自减运算符可以写在变量前面或后面,写在前面表示先运算再赋值,写在后面表示先赋值再运算。
以上就是Java中的算术运算符的详细介绍。
二、关系运算符
用于比较两个值之间的关系,如等于、不等于、大于、小于、大于等于和小于等于。常用的关系运算符包括==、!=、>、<、>=和<=。
Java关系运算符用于比较两个值之间的关系,返回一个布尔值(true或false)。下面是Java中的关系运算符:
2.1、==
判断两个值是否相等,如果相等返回true,否则返回false。
2.2、!=
判断两个值是否不相等,如果不相等返回true,否则返回false。
2.3、>
判断左边的值是否大于右边的值,如果是返回true,否则返回false。
2.4、<
判断左边的值是否小于右边的值,如果是返回true,否则返回false。
2.5、>=
判断左边的值是否大于等于右边的值,如果是返回true,否则返回false。
2.6、<=
判断左边的值是否小于等于右边的值,如果是返回true,否则返回false。
关系运算符通常用于条件语句和循环语句中,例如:
if (a == b) {
System.out.println("a等于b");
}
while (a < b) {
System.out.println("a小于b");
a++;
}
注意:关系运算符不能用于比较对象,因为对象之间的比较需要用到equals()方法。
三、逻辑运算符
用于执行逻辑运算,如与、或和非运算。常用的逻辑运算符包括&&、||和!。
Java中的逻辑运算符用于连接两个或多个布尔表达式,产生一个新的布尔值。Java中的逻辑运算符包括以下几种:
3.1、&&(逻辑与)
当且仅当两个操作数都为true时,结果为true;否则结果为false。
3.2、||(逻辑或)
当两个操作数中有一个为true时,结果为true;否则结果为false。
3.3、!(逻辑非)
操作数为true时,结果为false;操作数为false时,结果为true。
逻辑运算符的优先级从高到低分别为:! > && > ||。因此,在使用时应当注意运算符的优先级,避免出现不必要的错误。
以下是一些逻辑运算符的示例:
boolean a = true;
boolean b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
在这个示例中,变量a和b分别被赋值为true和false。第一个输出语句使用了逻辑与运算符,因此结果为false。第二个输出语句使用了逻辑或运算符,因此结果为true。第三个输出语句使用了逻辑非运算符,因此结果为false。
四、位运算符
用于执行二进制位运算,如按位与、按位或、按位异或和取反。常用的位运算符包括&、|、^和~。
Java中的位运算符是用来操作二进制数的运算符,它们可以对整数类型(byte、short、int、long)进行操作。Java中的位运算符有以下几种:
4.1、按位与(&):两个位都为1时,结果才为1,否则为0。
4.2、按位或(|):两个位都为0时,结果才为0,否则为1。
4.3、按位异或(^):两个位相同为0,不同为1。
4.4、取反(~):对二进制数进行取反操作,0变成1,1变成0。
4.5、左移(<<):将一个数的二进制码向左移动指定的位数,低位补0。
4.6、右移(>>):将一个数的二进制码向右移动指定的位数,高位补符号位。
4.7、无符号右移(>>>):将一个数的二进制码向右移动指定的位数,高位补0。
例如:
int a = 5; // 二进制为 0000 0101
int b = 3; // 二进制为 0000 0011
int c = a & b; // 0000 0001
int d = a | b; // 0000 0111
int e = a ^ b; // 0000 0110
int f = ~a; // 1111 1010
int g = a << 2; // 0001 0100
int h = a >> 2; // 0000 0001
int i = a >>> 2; // 0000 0001
以上代码中,a和b分别表示整数5和3的二进制码,通过位运算符进行运算得到c、d、e、f、g、h、i的值,分别表示按位与、按位或、按位异或、取反、左移、右移、无符号右移的结果。
五、赋值运算符
用于将值赋给变量,如=、+=、-=、*=、/=和%=。
Java赋值运算符用于给变量赋值,它将右侧表达式的值赋给左侧的变量。Java赋值运算符有以下几种:
5.1、= 赋值运算符
将右侧表达式的值赋给左侧的变量。
5.2、+= 加等于运算符
将右侧表达式的值加上左侧变量的值,并将结果赋给左侧变量。
5.3、-= 减等于运算符
将右侧表达式的值减去左侧变量的值,并将结果赋给左侧变量。
5.4、*= 乘等于运算符
将右侧表达式的值乘以左侧变量的值,并将结果赋给左侧变量。
5.5、/= 除等于运算符
将右侧表达式的值除以左侧变量的值,并将结果赋给左侧变量。
5.6、%= 取模等于运算符
将右侧表达式的值取模左侧变量的值,并将结果赋给左侧变量。
5.7、<<= 左移等于运算符
将左侧变量的值左移右侧表达式的值所指定的位数,并将结果赋给左侧变量。
5.8、>>= 右移等于运算符
将左侧变量的值右移右侧表达式的值所指定的位数,并将结果赋给左侧变量。
5.9、&= 按位与等于运算符
将左侧变量的值与右侧表达式的值进行按位与运算,并将结果赋给左侧变量。
5.10、^= 按位异或等于运算符
将左侧变量的值与右侧表达式的值进行按位异或运算,并将结果赋给左侧变量。
5.11、|= 按位或等于运算符
将左侧变量的值与右侧表达式的值进行按位或运算,并将结果赋给左侧变量。
六、条件运算符
用于根据条件选择执行不同的操作,如三目运算符(?:)。
Java中的条件运算符是用来进行条件判断的,主要有三种:if语句、switch语句和三目运算符。
6.1、if语句
if语句是最基本的条件判断语句,用于判断一个条件是否成立,如果成立则执行某个语句块,否则执行另一个语句块。if语句的语法格式如下:
if (condition) {
// 如果条件成立则执行这里的语句块
} else {
// 如果条件不成立则执行这里的语句块
}
其中,condition是一个布尔表达式,如果它的值为true,则执行if语句后面的花括号里的语句块;否则执行else语句后面的花括号里的语句块。
6.2、switch语句
switch语句也用于条件判断,但是它的用法比if语句稍微复杂一些。switch语句的语法格式如下:
switch (expression) {
case value1:
// 如果expression的值等于value1,则执行这里的语句块
break;
case value2:
// 如果expression的值等于value2,则执行这里的语句块
break;
default:
// 如果expression的值不等于任何一个case,则执行这里的语句块
break;
}
其中,expression是一个表达式,它的值会被与每个case后面的值进行比较。如果expression的值等于某个case后面的值,则执行该case后面的语句块;如果expression的值不等于任何一个case后面的值,则执行default后面的语句块。
6.3、三目运算符
三目运算符是一种简单的条件运算符,它的语法格式如下:
result = condition ? value1 : value2;
1
其中,condition是一个布尔表达式,如果它的值为true,则返回value1;否则返回value2。这个运算符通常用于简单的条件判断和赋值操作。
七、instanceof运算符
用于判断一个对象是否属于某个类的实例。
Java instanceof运算符用于检查对象是否是某个特定类的实例。它的语法如下:
object instanceof class
1
其中,object是要检查的对象,class是要检查的类。如果object是class的一个实例,则返回true,否则返回false。
例如,假设有一个Animal类和一个Dog类,Dog是Animal的子类,我们可以使用instanceof运算符来检查一个对象是否是Animal或Dog的实例:
Animal animal = new Animal();
Dog dog = new Dog();
if (animal instanceof Animal) {
System.out.println("animal is an instance of Animal");
}
if (dog instanceof Animal) {
System.out.println("dog is an instance of Animal");
}
if (dog instanceof Dog) {
System.out.println("dog is an instance of Dog");
}
这段代码会输出:
animal is an instance of Animal
dog is an instance of Animal
dog is an instance of Dog
因为animal是Animal的实例,dog既是Animal的实例也是Dog的实例。
instanceof运算符也可以用于检查一个对象是否是某个接口的实现类的实例。例如,假设有一个Movable接口和一个Car类实现了这个接口,我们可以使用instanceof运算符来检查一个对象是否是Movable的实例:
Movable car = new Car();
if (car instanceof Movable) {
System.out.println("car is an instance of Movable");
}
这段代码会输出:
car is an instance of Movable
因为car是Car的实例,同时也是Movable接口的实现类的实例。
需要注意的是,如果一个对象是null,那么使用instanceof运算符会抛出NullPointerException异常。因此,在使用instanceof运算符之前,需要先确保对象不是null。
八、++和–运算符
用于对变量进行自增或自减操作。
Java中的++和–运算符是自增和自减运算符,它们可以用来对变量进行加1或减1的操作。
++运算符有两种形式,前缀和后缀。前缀形式++i表示先将变量i加1,然后再使用i的值;后缀形式i++表示先使用i的值,然后再将变量i加1。
例如:
int i = 0;
System.out.println(++i); // 输出1
System.out.println(i++); // 输出1
System.out.println(i); // 输出2
–运算符和++运算符类似,也有前缀和后缀两种形式。前缀形式–i表示先将变量i减1,然后再使用i的值;后缀形式i–表示先使用i的值,然后再将变量i减1。
例如:
int i = 0;
System.out.println(--i); // 输出-1
System.out.println(i--); // 输出-1
System.out.println(i); // 输出-2
需要注意的是,++和–运算符只能用于变量,不能用于常量。并且,它们只能用于数值类型和字符类型的变量,不能用于布尔类型的变量。
九、Java运算符的优先级详解
需要注意的是,Java运算符有优先级之分,即某些运算符会先于其他运算符执行。在表达式中,可以使用括号来改变运算符的优先级。
Java中的运算符按照优先级从高到低的顺序如下:
后缀运算符:++、–
一元运算符:+、-、!、~、++、–、(type)
乘性运算符:、/、%
加性运算符:+、-
移位运算符:<<、>>、>>>
关系运算符:<、<=、>、>=、instanceof
相等运算符:==、!=
按位与运算符:&
按位异或运算符:^
按位或运算符:|
逻辑与运算符:&&
逻辑或运算符:||
条件运算符:? :
赋值运算符:=、+=、-=、=、/=、%=、&=、^=、|=、<<=、>>=、>>>=
在表达式中,优先级高的运算符先被计算。如果优先级相同,则按照从左到右的顺序进行计算。如果需要改变运算的优先级,可以使用括号来改变。例如:
int a = 10, b = 5, c = 2;
int result = a + b * c; // 先计算b*c,再加上a
int result2 = (a + b) * c; // 先计算a+b,再乘以c
标签:语句,10,Java,变量,int,运算符,true
From: https://www.cnblogs.com/mwx2024/p/18383919