运算符----( A )
运算符
Java语言支持如下运算符:
--算数运算符: +, -, *, /, %, ++, - -
--赋值运算符 =
--关系运算符: >, <, >+,<=, ==,!= instanceof
--逻辑运算符: &&, || , !
--位运算符: &, |, ^, ~, >>, << , >>> (了解!!!)
--条件运算符: ? :
--扩展赋值运算符: +=,-=, *=, /=
算数运算符
二元运算符类型提升
--整数运算:
如果两个操作数有一个为long,则结果也为long
没有long时,结果为int,即使操作数全为shot,byte,结果也是int
--浮点运算:
如果两个操作数有一个为double\,则结果为double
只有两个操作数都是float,则结果才为float
一元运算符( ++ , - - )
Int a=3;
Int b=a++;//执行完后,b=3,先给b赋值,再自增
Int c=++a;//执行完后,c=5,先自增,再给b赋值
布尔逻辑表达符(只能操作别变量)
逻辑与: &&
逻辑或: ||
逻辑非: !
逻辑与和逻辑或采用短路的方式,从左到右计算,如果确定值则不会在计算下去.
--boolean c=1>2&&2>(3/0);&&不会抛异常;说明没有执行3/0;
位运算符(了解)
~ -- 取反 & -- 按位与
| -- 按位或 ^ -- 按位异或
<< :左移运算符
>>:右移运算符
笔试可能会考:
--右移一位相当于除2取商
--左移一位相当于乘2
Int a=3*2*2;
Int b=3<<2;//相当于:3*2*2;
Int a=12/2/2;
Int b=12>>2;相当于:12/2/2;
扩展运算符:
运算符 |
用法举例 |
等效表达式 |
+= |
A+=b |
A=a+b |
-= |
A-=b |
A=a-b |
*= |
A*=n |
A=a*b |
/= |
A/=b |
A=a/b |
%= |
A%=b |
A=a%b |
public class TestOperator {
public static void main(String[] ages) {
// 没有long时,结果为int,即使操作数全为shot,byte,结果也是int
int w = 10 % 2;
System.out.println(w);
// 如果两个操作数有一个为double\,则结果为double
// 每个变量本身是独立的一个存储单元(分开思考)
double d = 10.2 % 2;
System.out.println(d);
int a = 3;
System.out.println(a);
// 直接输出结果a=3;
int b = a++;// 执行完后,b=3,先给b赋值,再自增
// 先把a赋值给b后a在自增为4所以结果b仍然是3
// 结果3
System.out.println(b);
int c = ++a;// 执行完后,c=5,先自增,再给b赋值
// a=4先自增为5,在赋值给c,所以此处c等于5
System.out.println(a);// 此处等于5
System.out.println(b);// 此处b等于3
System.out.println(c);// 此处c等于5
// 逻辑与的问题: &&
// true-false false
// true-true true
// false-true false
// false-false false
// 只要有一个为false那整个结果都为false
// 逻辑或也是一样的:||
// 短路问题可以提高我们的效率
// true-false true
// true-true true
// false-true true
// false-false false
// 只要有一个为false那整个结果都为false
// 在java里面0不能做除数,否则回报异常
// int s = 3 / 0;
// Exception in thread "main" java.lang.ArithmeticException: / by zero at
// TestOperator.main(TestOperator.java:39)
/*
* 在java里面0不能做除数,否则会报异常
* Exception in thread "main"
* 错误异常
* main 线程里面有一个异常
* ArithmeticException
* 算数异常
* by zero
* 除以零
* TestOperator.main(TestOperator.java:39
* 39行
*/
// boolean wp = 1 < 2 && 2 > (3 / 0);
// System.out.println(wp);
// 测试位运算
/*
* 与操作 只要一个为0所有结果都为0 0就相当
* 或操作 只要一个为1所有结果都为1 1就相当
*
* 8:1000
*
* 4:0100
* ----------------------
* 与结果: 0000 结果0
* 或结果: 1100
* 从右向左 0 0 5 7 等于12
* 非操作 取反
* 8:1000
* ----------
* 非结果:负0111
* 从右向左 1 3 5
* 异或操作 不一样返回1,一样得0
* 8:1000
*
* 4:0100
* ----------
* 异或结果:1|1|0|0
* 从右向左 0 0 5 7
*
* 0|0|1|1
* 0|1|0|1
* -----------
* 异或结果:0|1|1|0
*
*/
int m = 8;
int n = 4;
System.out.println(m & n);
System.out.println(m | n);
System.out.println(~m);
System.out.println(m ^ n);
int a0 = 3 * 2 * 2;
// 等于左移两位,等于3*2*2,左移三位等于3*2*2*2;
// 只能乘以2的倍数
int b0 = 3 << 3;// 相当于:3*2*2;
int a9 = 12 / 2 / 2;
// 等于右移两位,等于12/2/2 右移三位等与12/2/2/2
// 只能乘以2的倍数
int b9 = 12 >> 2;// 相当于:12/2/2;
System.out.println(a0);
System.out.println(b0);
System.out.println(a9);
System.out.println(b9);
// 扩展运算符
int ww = 3;
// 等于ww=a+5;
a += 5;
}
}
本文来自博客园,作者:神奇的梦,转载请注明原文链接:https://www.cnblogs.com/fantasticDream/p/16265150.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix