作者:骚扰list_238 | 来源:互联网 | 2024-10-10 14:24
本文由编程笔记#小编为大家整理,主要介绍了第三天(上)运算符相关的知识,希望对你有一定的参考价值。
运算符
在JAVA中,
使用算数运算符 +-*/表示加减乘除
用%表示取余 mod 也称 取模运算符
当/号两边都是整数的时候为整数除法,否则为浮点数除法
注意:整数被0整除会产生异常,浮点数被0整除,会出现无穷大或者NaN.
赋值运算符 等于好 = 将右边边的值赋给左边的变量
二元算数运算符
例如x+=4等价于x=x+4 同样有-= *= /=等等符号
一般将运算符放在等号左边 ( 可以看作将等号左边的内容移动到等号右边,左边在加一个x)
自增运算符与自减运算符
因为加一和减一是常见的操作,所以java借鉴了c中的自增和自减
n++ 当前值加一
n-- 当前值减一
注意++ --改变是变量的值,操作不能是数值.
上面是后缀形式,相应的也有前缀形式
++n
--n
两种都表示加一和减一但是
前缀是先进性加1 因为他是前缀吗 (笑)
后缀则是先用原来的值,运算完然后再加1.
int n = 7;
int m = 7;
int a = 2*++m;//现在 a是16 m是8
int b = 2*n++;//现在b是14 n是8
关系运算符和boolean运算符
java中包含各种关系运算符 又叫比较运算符常见的大于小于等
==检测是否相等
!=检测是否不相等
沿用c的习惯
&&表示短路与
||表示短路或
!表示逻辑非
注意在java中&&和||是按照短路的方式求值的,如果第一个已经可以确定表达式的值,那么久不会进行第二个运算.这样可以避免一些错误的发生.
例如 x!=0&&1/x 当x为零时不会计算1/x
同样当expression||expresstion2 第一个为真是自动为真 不会计算第二个
&&与& ||与|的区别
& |判断完第一个表达式后还会判断第二个 而短路不会,因此一般使用短路与和短路或节省时间 同时&|也是位运算符
操作符 | 描述 假设布尔变量A为真,变量B为假 | 例子 |
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
三目运算符 又叫条件运算符
?:
布尔表达式?表达式1:表达式2
例如 x
位运算符
1.与运算符
与运算符用符号“&”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。
public class data13
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 与的结果是:"+(a&b));
}
}
运行结果
a 和b 与的结果是:128
下面分析这个程序:
“a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。
2.或运算符
或运算符用符号“|”表示,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
public class data14
{
public static void main(String[] args)
{
int a=129;
int b=128;
System.out.println("a 和b 或的结果是:"+(a|b));
}
}
运行结果
a 和b 或的结果是:129
下面分析这个程序段:
a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。
3.非运算符
非运算符用符号“~”表示,其运算规律如下:
如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}
运行结果a非的结果为13
a的二进制为0010 根据非的运算规律结果为1101 为13
4.异或运算符
异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
public class data16
{
public static void main(String[] args)
{
int a=15;
int b=2;
System.out.println("a 与 b 异或的结果是:"+(a^b));
}
}
运行结果
a 与 b 异或的结果是:13
分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。
移位运算符
移位运算符操作的对象是二进制位,可以单独用移位运算符来处理int类型
运算符 | 含义 | 例子 |
<< | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) | x<<3 |
>> | "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. | x>>3 |
>>> | "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. | x>>>3 |
注:x<y ;x>>y相当于x/2y
从计算速度上讲,移位运算要比算术运算快。
如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。
运算符优先级
由高到低
类别由高到低 | 操作符 | 关联性 |
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !? | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = <<= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = <<=&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
补充:
字符串运算符: + 可以连接不同的字符串。
转型运算符: () 可以将一种类型的数据或对象,强制转变成另一种类型。如果类型不相容,会报异常出来。