Java基础系列文章-运算符
Java基础系列文章-运算符
文章目录
前言
春节期间都没写文章了,不能放弃,准备补补哈哈。
提示:以下是本篇文章正文内容,下面案例可供参考
一、运算符概述
运算符是指定要在表达式中执行的计算类型的标志或符号。举一个简单的例子:
1+2 ,其中+就是运算符,而1+2就是表达式,1和2就是操作数,而int x = 1 +2;就是一个语句
二、算术运算符
算术运算符即算术运算符号。是完成基本的算术运算 (arithmetic operators) 符号,就是用来处理四则运算的符号。Java中的算术运算符:+、-、*、/、%、++、–
操作符 | 描述 |
+ | 加法 - 相加运算符两侧的值 |
- | 减法 - 左操作数减去右操作数 |
* | 乘法 - 相乘操作符两侧的值 |
/ | 除法 - 左操作数除以右操作数 |
% | 取模 - 左操作数除以右操作数的余数 |
++ | 自增 - 操作数的值增加1 |
- - | 自减 - 操作数的值减少1 |
引申:
++在前先自增后赋值,在后先赋值在自增,但是注意,只是在当前语句生效,Java通常中以;来断定。
三、赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。
操作符 | 描述 |
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<< = | 左移位赋值运算符 |
>> = | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^ = | 按位异或赋值操作符 |
| = | 按位或赋值操作符 |
四、关系运算符
关系运算符(relational operators)也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
操作符 | 描述 |
> | 只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值, 则返回 true。 |
< | 只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回 true。 |
>= | 只支持左右两边操作数是数值类型。如果前面变量的值大于等于后面变量的值, 则返回 true。 |
<= | 只支持左右两边操作数是数值类型。如果前面变量的值小于等于后面变量的值, 则返回 true。 |
== | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值相等,也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。Java 也支持两个 boolean 类型的值进行比较。 |
!= | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值不相等,也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。 |
注意点如下所示:
- 基本类型的变量、值不能和引用类型的变量、值使用 == 进行;boolean 类型的变量、值不能与其他任意类型的变量、值使用 == 进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较。
- == 和 != 可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。
五、逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
操作符 | 描述 |
&& | a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false |
|| | a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false |
! | !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true |
& | a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false |
| | a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true |
^ | a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 |
六、三元(三目)运算符
- 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反!、自增++、自减–
- 二元运算符:需要两个数据才可以进行操作的运算符。例如:加法+、赋值=
- 三元运算符:需要三个数据才可以进行操作的运算符。
? :运算符是三元运算符。Java三元运算符基本上是简单的if语句的简写形式。
三元运算符格式:
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
其中,条件判断 是一个布尔表达式。当 条件判断 为真时,执行 表达式A, 否则就执行 表达式B。此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。
七、位运算符
位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字符型数据。
操作符 | 描述 |
& | 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。 |
| | 按位或操作符,只要两个操作数的某一位有一个非0时候结果的该位就为1。 |
^ | 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 |
〜 | 按位补运算符翻转操作数的每一位。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
八、instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
instanceof运算符使用格式如下:
( Object reference variable ) instanceof (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
下面是一个例子:
String name = 'James';
boolean result = name instanceof String; // 由于name是String类型,所以返回真
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
看下面的例子:
class Vehicle {}
public class Car extends Vehicle {
public static void main(String args[]){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result);
}
}
以上实例编译运行结果如下:
true
九、Java运算符优先级
Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。如小表所示
优先级 | 运算符 | 结合性 |
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
注意:
使用优先级为 1 的小括号可以改变其他运算符的优先级,在实际的java编程中,建议适当使用()来让程序容易读一些。
总结
本篇文章就到这里结束了,主要是对Java基础中的运算符部分做了一个大致介绍。
著作权归NoLongerConfused所有。商业转载请联系NoLongerConfused获得授权,非商业转载请注明出处。