java常见运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。
算术运算符
算术运算符主要用于数学表达式中,和数学中的运算符作用一样,以下便是算术运算符:
- + ,即加法运算;
- — 减法运算;
- *,乘法运算;
- / 除法运算,注意是整除,结果为整数;
- % 除法后取余数;
System.out.println("两数之和:"+(num1+num2));{ // + 运算符
{System.out.println("两数之差:"+(num1-num2));} // - 运算符
{System.out.println("两数之商:"+(num1/num2));} // / 运算符
{System.out.println("两数之积:"+(num1*num2));} // * 运算符
{System.out.println("两数之余:"+(num1%num2));} // % 运算符
}
- 常(恒)量 :在程序运行时,不能修改它的值的量;
在java中,声明常量使用的关键字。
// 定义常量
final double PI = 3.14;
System.out.println(PI);
// 注意:如下代码会报错!!!,因为常量不可以被修改
// PI = 3.566666;
System.out.println(PI);
比较运算符
用于比较两个量的大小;
- > ,大于;
- < ,小于;
- >= ,大于等于;
- <= ,小于等于;
- != ,不等于;
- == ,等于;
class Test01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
int c = 10;
System.out.println(a > b) ; // > ,大于
System.out.println(a < b) ; // < ,小于
System.out.println(a >= b) ; // >= ,大于等于
System.out.println(a <= b) ; // <= ,小于等于
System.out.println(a != b) ; // != ,不等于
System.out.println(a != c) ;
System.out.println(a == b) ;// == ,等于
System.out.println(a == c) ;
}
}
代码结果
逻辑运算符
主要用于连接多个条件的关联关系。
- && ,& 与运算符,表示的是并且关系,全部为真则为真,否则为假
- ||, | 或运算符,表示或者的关系,只要一者为真则为真,全部为假才为假
- !,非运算符,否定,取反
- &&,表示短路(短路原则)与, || 表示短路非,为了效果更高,在编程建议使用短路与和短路或
int age = 12;
boolean gender = false;
if (age >= 18 || !gender) {
System.out.println("恭喜你,成年了"); //短路或和取反运算符
}
if (age >= 18 && gender) {
System.out.println("恭喜你,成年了"); //短路与运算符
}
运行结果
自加和自减运算符
自增自减运算符存在于C/C++/C#/Java/等高级语言中,它的作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量的值加(或减)一。——百度百科
- ++a 前加加,值加1
- a++ 后加加,值加1
- - -a,前减减,值减一
- a- -,后减减,值减一
前加加(减减)和后加加(减减)优先级别不同引起的,前加加(减减)优先级别非常高,仅次于括号后加加(减减)的优先级别非常非常低,甚至比赋值符低。所以先赋值后加加,故值先不变
用jshell简单表示,这里先 a赋值给b,之后a才加一,所以b=10,而a的值会加一
赋值运算符
- = 将等号右侧的值赋给左侧的变量
- += 加赋值
- ** - =** 减赋值
- *= 乘赋值
- /= 除赋值
- %= 求余赋值
- &= 按位与赋值
- | = 按位或赋值
- ^= 按位异或赋值
- <<= 左移位赋值
- “>>=” 右移位赋值
以下图片来自于网络
用加赋值求0到一百的和
class Test06 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i; //加赋值
}
System.out.println("0~100的和是:"+ sum);
}
}
求得结果
三目运算符
三目运算符,又称条件运算符,相当于 if,对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为真,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,==从右向左分组计算。==例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行 ——选自网络
位运算符
计算机底层本质是二进制(半导体)运算。
二进制:人们常常使用十进制来计数,如:0 1 2 3 4 5 6 7 8 9 逢10进1;而在二进制中:
个位数只有2个,0 1 逢二进一。
八进制:逢八进一。
十六进制:0~9 后面是9之后的数字的表示—>ABCDEF (10,11,12,13,14,15)
在计算时,数字会换算成2进制来计算,如下图,但是这样会分不清结果的正负性质。故我们采用数字的补码来进行运算。
c + d =?
计算机底层本质上来说,是以补码运行的!!
源码:数值的二进制状态码
反码:符号位不变,其余各位取反,得到的就是反码
补码:反码+1,就是补码
正数的源码、反码、补码一致,也就是正数
正确算法
因为是字节类型声明,(会产生溢出现象)所以最后变成八位!!!看最高位数字,若是1(即负数)注意转换成源码!!!0就不用换
对于一个字节
无符号的时候:
1111 1111 255 最大值
0000 0000 0 最小值 0~255 256个值
有符号的时候是 -128 ~127 256个值
- & 与运算 , a & b; // 都为真,则为真
0000 1010
0000 1011 &
---------------
0000 1010 10
看数值 比如 &运算 上面为1 下面为1 两者为1 则为真 则结果为1
通过补码异或 来交换值
- | // 或运算符 ,A | b 一真为真
0000 1010
0000 1011
-----------
0000 1011 11
- ^ // 异或运算 A ^ b 相反为真
0000 1010
0000 1011 ^
---------
0000 0001 1
-
~ // 按位取反
-
<< 左移运算符
其功能把,左边的运算数的各二进位全部左移若干位,由,右边的数指定移动的位数,高位丢弃,低位补0。
例: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
- >> 有符号右移运算
- >>> 无符号右移运算
右移运算符,其功能是把,左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
有符号时正数 ,最高位补0,而为负数时,符号位为1