【Java基础】Java的运算符
算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)加减乘除,很简单就不用说了,大家都懂,就这个取余要求必须是两个整型数字才行++ 或 - - 是单目运算符,放在操作数的前面或后面都是允许的。++运算,变量自增长1;- -运算,变量自减少1。那么如果有一个变量i,++i和i++有什么区别呢?独立运算时:i++和++i没有
一、Java的运算符
1. 算术运算符
算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)
- 加法运算:+
- 减法运算:-
- 乘法运算:*
- 除法运算:/,(另外,整型之间的除法运算是整除,这也就意味着2 / 4的结果为0,如果我们想像数学一样得到一个小数,可以使用浮点类型的操作数。)例如:
public class OperatorDemo1 {
public static void main(String[] args) {
// 分组初始化两个整型变量i1、i2,值分别为2、4
int i1 = 2, i2 = 4;
// 使i1除以i2,并将返回结果赋值给i3
int i3 = i1 / i2;
System.out.println("整型2除以整型4的结果为:" + i3);
// 分组初始化两个浮点型变量f1、f2,值分别为2、4
float f1 = 2f, f2 = 4f;
// 使f1除以f2,并将返回结果赋值给f3
float f3 = f1 / f2;
System.out.println("浮点型2除以浮点型4的结果为:" + f3);
}
}
运行结果是:
整型2除以整型4的结果为:0
浮点型2除以浮点型4的结果为:0.5
- 取模运算:%(要求两个整型数字相除取余数)
举个例子:int a = 2; int b = 4;
2. 自增(++)、自减(- -)运算符
++ 或 - - 是单目运算符,放在操作数的前面或后面都是允许的。
++运算,变量自增长1;- -运算,变量自减少1。
那么如果有一个变量i,++i和i++有什么区别呢?
独立运算时:i++和++i没有区别,都是实现自动加1的功能
混合运算时:i++和++i就不同了
1.++/- -在先,先运算后取值
int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2
前++/- -时,就相当于变量a先自增1,再把值赋给b;
2.++/- -在后,先取值后运算
int a = 1;
int b = a++;//这就等价于 int b=a;a=a+1;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是
后++/- -时,就相当于变量a先把值赋给b,再自增1;
注意:
- 自增/自减运算可以用于整数类型 byte、short、int、long,浮点类型 float、double,以及字符串类型 char。
- 在 Java 1.5 以上版本中,自增/自减运算可以用于基本类型对应的包装器类 Byte、Short、Integer、Long、Float、Double 和 Character。
3.赋值运算符
赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,例如 int a=2.
它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。
记住在Java中两个数相等用的符号是==,而=是赋值运算符。
例如 int a=1,int b=1,如果表示a等于b,则是a==b
赋值运算符可以和算数运算符组成复合赋值运算:
- 等于号:=(用于给变量赋值)
- 加等于:+=
- 减等于:-=
- 乘等于:*=
- 除等于:/=
- 取模等于:%=
举个例子:
1. int x,y,z; //定义3个整型的变量
2. x=y=z=5; //为变量赋初值为5
3. x+=10; //等价于x=x+10,结果x=15
4. y-=3; //等价于y=y-3,结果y=2
5. z*=5; //等价于z=z*5,结果z=25
6. x/=4; //等价于x=x/4,结果x=3
7. z%=x; //等价于z=z%x,结果z=1
4.关系运算符
关系运算符用来比较两个值的关系。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
- 相等:==(如果判断正确结果为true)
- 小于号:<
- 大于号:>
- 小于等于:<=
- 大于等于:>=
- 不等于:!=
比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false
public static void main(String[] args) {
System.out.println(1==1);//true
System.out.println(1<2);//true
System.out.println(3>4);//false
System.out.println(3<=4);//true
System.out.println(3>=4);//false
System.out.println(3!=4);//true
}
5.逻辑运算符
逻辑运算符分为:
- 短路逻辑运算符
- 逻辑运算符
短路逻辑运算符 与 逻辑运算符 的区别是:
- 逻辑运算符:先走一遍,在判断
- 短路逻辑运算符:一但符合条件,后面的判断不走
注意:短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。
1. 逻辑运算符
逻辑运算符:&、|、^、!
2. 短路逻辑运算符
短路逻辑运算符:&&、||
- 双与:&&(全真才是真)
- 单与:&(全真才是真)
- 双或:||(全假才是假)
- 单或:|(全假才是假)
- 取反:!
其实也就是数学里面学到的逻辑运算:与、或、非
//逻辑与&&(并且) 一假即假,全真才是真
System.out.println(true && true);//true
System.out.println(true && false);//false
System.out.println(false && true);//false,右边不计算
//逻辑或||(或者)一真即真,全假才是假
System.out.println(false || false);//falase
System.out.println(false || true);//true
System.out.println(true || false);//true,右边不计算
//逻辑非!(不是)
System.out.println(!false);//true
那么&&与&有何区别呢?
做个测试:
6.三元运算符
我们都接触过考试,一般都是60分及格。
也就是说分数大于或等于60时,及格;分数小于60时,不及格。
这种在生活中常见的情况在程序里是如何表现的的?
这就需要三元运算符了。
当一个布尔表达式的结果分别对应两种情况时,可以使用三元表达式。
该运算符由三个操作数组成,用于判断布尔表达式。它的目的是确定应将哪个值分配给变量。条件运算符的语法为:
变量 = (布尔表达式) ? 值1 : 值2
7.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
总结
各位小主,如果感觉有一点点帮助到你的话,麻烦留下赞赞一枚哦~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)