Java运算符总结
来源:互联网 发布:免费2级域名 编辑:程序博客网 时间:2024/06/16 17:08
Java 运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
算术操作符
Java的算数操作符与其它大多数程序设计语言都是相同的,其中包括加号(+)、减号(-)、乘号(×)、除号(÷)以及取模(%)。整数的除法将会去掉小数位而不是四舍五入。一个算数操作符的演示:
public static void main(String[] args) { int a, b, result; a = 37; b = 13; result = a + b; System.out.println("a + b : " + result); result = a - b; System.out.println("a - b : " - result); result = a * b; System.out.println("a * b : " * result); result = a / b; System.out.println("a / b : " / result); result = a % b; System.out.println("a % b : " % result);}
其输出结果为:
a + b : 50
a - b : 24
a * b : 481
a / b : 2
a % b : 11
自增和自减运算符
public static void main(String[] args) { int i = 1 System.out.println("i : " + i); System.out.println("++i : " + ++i); System.out.println("i++ : " + i++); System.out.println("i : " + i); System.out.println("--i : " + --i); System.out.println("i-- : " + i--); System.out.println("i : " + i);}
其输出结果为:
i : 1
++i : 2
i++ : 2
i : 3
–i : 2
i– : 2
i : 1
赋值操作符
Java的赋值除了=外,还有与各个算术运算符结合组成的赋值运算符(+=,-=,*=,/=,%=),其作用是对左右进行运算后将结果赋值给左边的变量。一个简单的例子:
public static void main(String[] args] { int x , y; x = 22; y = 14; x += y; System.out.println("x += y : " + x); x -= y; System.out.println("x += y : " + x); x *= y; System.out.println("x *= y : " + x); x /= y; System.out.println("x /= y : " + x); x %= y; System.out.println("x %= y : " + x);}
其输出结果为:
x += y : 36
x -= y : 22
x *= y : 308
x /= y : 22
x %= y : 8
比较操作符
比较操作符生成的是一个布尔值(boolean)结果,它们计算的是操作数之间的关系。如果关系成立则返回true,否则返回false。比较操作符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)注意:测试对象的等价性时一般不使用==,而是使用覆盖了父类的方法Object.equals(Object obj)判断。
短路
&&和||是两个特殊的比较操作符,当使用短路与(&&)操作符时,如果第一个条件为false则之后的判断都不会执行而直接跳过;而当使用短路或(||)操作符时,如果第一个条件为true则不会检查后面的部分的真假而直接返回true。简而言之,短路就是一旦能够明确无误地确定整个表达式的值,就不会再计算表达式剩余的部分了。下面是一个例子:
public static void main(String[] args) { boolean b = test1(0) && test2(2) && test3(2); System.out.println("expression is " + b);}static boolean test1(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 1)); return val < 1;}static boolean test2(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 2)); return val < 2;}static boolean test3(int val) { System.out.println("test1(" + val + ")"); System.out.println("result: " + (val < 3)); return val < 3;}
其输出结果为:
test1(0)
result : true
test2(2)
result : false
expression is false
位操作符
Java中的位操作符用来操作整数基本数据类型中的单个比特(bit),即二进制位。位操作符包括位与(&)、或(|)、异或(^)、非(!)、左移位(<<)、右移位(>>)和无符号右移(>>>)。在位运算中,1被视为true,而0被视为false。
public static void main(String[] args) { // 1、位与(&) // 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0 System.out.println(5 & 3);// 结果为1 System.out.println(4 & 1);// 结果为0 // 2、位或(|) // 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0 System.out.println(5 | 3);// 结果为7 // 3、位异或(^) // 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0 System.out.println(5 ^ 3);//结果为6 // 4、位非(~) // 操作数的第n位为1,那么结果的第n位为0,反之。 System.out.println(~5);// 结果为-6 // 5、左移(<<) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0 // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20 System.out.println(5 << 2);// 运行结果是20 // 6、右移(>>) 高位补符号位 // 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0: // 0000 0000 0000 0000 0000 0000 0000 0001 System.out.println(5 >> 2);// 运行结果是1 // 7、无符号右移(>>>) 高位补0 // 例如 -5换算成二进制后为:0101 取反加1为1011 // 1111 1111 1111 1111 1111 1111 1111 1011 // 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位: System.out.println(5 >> 3);// 结果是0 System.out.println(-5 >> 3);// 结果是-1 System.out.println(-5 >>> 3);// 结果是536870911}
三元操作符
三元操作符也被称为条件操作符,它有三个参数,且会在计算之后获得一个值。其格式为boolean-exp ? value0 : value1。当boolean-exp(布尔表达式)的结果为true,就返回value0;反之返回value1。
public static void main(String[] args) { System.out.println(1 > 0 ? "这个表达式是对的" : "这个表达式是错的"); System.out.println(1 < 0 ? "这个表达式是对的" : "这个表达式是错的");}
其输出结果为:
这个表达式是对的
这个表达式是错的
优先级
当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的运算顺序。Java对运算顺序做了特别的规定(最简单的就是先乘除后加减),而程序员经常会忘记一些运算顺序,所以应该用括号明确规定运算顺序。
public static void main(String[] args) { int x = 1, y = 2, z = 3; int a = x + y - 2 / 2 + z; int b = x + (y - 2) / (2 + z); System.out.println("a = " + a + " b = " + b);}
其输出结果为:
a = 5 b = 1
运算符优先级:从左到右
[ ] ( ) ++ – ! ~ instanceof * / % + - << >> >>> < > < = > = == != & ^ && || ? : op=
- Java运算符总结
- Java运算符总结
- Java 位运算和运算符总结
- Java 运算符的总结
- java 运算符的总结
- Java位运算符总结
- Java位运算符总结
- java位运算符总结
- JAVA总结(运算符)
- Java 位运算符总结
- JAVA常用运算符极其运算优先级的总结
- java逻辑运算符位运算符总结
- java课堂总结--运算符 表达式
- java基础_instanceof运算符的总结
- Java中运算符的总结(早期)
- java中的移位运算符:<<,>>,>>>总结
- java中的移位运算符:<<,>>,>>>总结
- java中的移位运算符:<<,>>,>>>总结
- Stars
- android studio 导入共享库,本地外部库
- 获取手机的联系人
- 欢迎使用CSDN-markdown编辑器
- CM自带ROOT请求处理流程
- Java运算符总结
- php的五十个提高效率小技巧
- ConcurrentHashMap原理
- 代码块
- 使用 Volley
- 利用Python,四步掌握机器学习
- Java服务端调用百度推送接口推送消息
- 解决android
- 二叉排序树