运算符

Posted rijiyuelei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运算符相关的知识,希望对你有一定的参考价值。

1.算术运算符:+ - * / % ++ --  + (连接符)

设整数变量A的值为10,变量B的值为20:

+ 加法:相加运算符两侧的值 A + B 等于 30
- 减法:左操作数减去右操作数 A – B 等于 -10
* 乘法:相乘操作符两侧的值 A * B等于200
/ 除法:左操作数除以右操作数 B / A等于2
取余:左操作数除以右操作数的余数 B%A等于0
++ 自增: 操作数的值增加1

++在前:先自增1,后运算

++在后:先运算,后自增1

-- 自减: 操作数的值减少1

--在前:先自减1,后运算

--在后:先运算,后自减1

连接符:+ 只能使用在String与其他数据类型变量之间使用。  

2.赋值运算符:=  +=  -=  *=  /=  %= 

= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A,C 与 A 同类型时等价于 C = C / A
(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A
<< = 左移位赋值运算符 C << = 2等价于C = C << 2
>> = 右移位赋值运算符 C >> = 2等价于C = C >> 2
&= 按位与赋值运算符 C&= 2等价于C = C&2
^ = 按位异或赋值操作符 C ^ = 2等价于C = C ^ 2
| = 按位或赋值操作符 C | = 2等价于C = C | 2
 1 int i2,j2;
 2 //连续赋值
 3 i2 = j2 = 10;
 4 
 5 int i3 = 10,j3 = 20;
 6 int num1 = 10;
 7 num1 += 2;//num1 = num1 + 2;
 8 System.out.println(num1);//12
 9 
10 int num2 = 12;
11 num2 %= 5;//num2 = num2 % 5;
12 System.out.println(num2);
13 
14 short s1 = 10;
15 //s1 = s1 + 2;//编译失败
16 s1 += 2;//结论:不会改变变量本身的数据类型
17 System.out.println(s1);

 

 

3.关系运算符(关系运算符): == != >  <  >=  <=  

== 相等为真
!= 值不相等为真
大于为真
小于为真
>= 大于或等于为真
<= 小于或等于为真
  1. 比较运算符的结果是boolean类型
  2. > < >= <= :只能使用在数值类型的数据之间。
  3. == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
1 Account acct1 = new Account(1000);
2 Account acct2 = new Account(1000);
3 boolean b1 = (acct1 == acct2);//false比较两个Account是否是同一个账户。
 boolean b2 = (acct1 != acct2);//true

 

instanceof

左边的对象是否是它右边的实例。返回 boolean 的数据类型。

 1 import ?java.util.ArrayList;
 2 import java.util.Vector;
 3 ?
 4 public class Main {
 5 ?
 6 public ?static void main(String[] args) {
 7   ?Object testObject = new ArrayList();
 8      ?displayObjectClass(testObject);
 9   ?}
10   ?public static void displayObjectClass(Object o) {
11      ?if (o instanceof Vector)
12      ?System.out.println("对象是 java.util.Vector 类的实例");
13      ?else if (o instanceof ArrayList)
14      ?System.out.println("对象是 java.util.ArrayList 类的实例");
15      ?else
16      ?System.out.println("对象是 " + o.getClass() + " 类的实例");
17   ?}
18 }
对象是 java.util.ArrayList 类的实例

 

4.逻辑运算符:& &&  |  || !

操作的都是boolean类型的变量。而且结果也是boolean类型

&   &&   与 

相同点1:& 与 && 的运算结果相同

相同点2:当符号左边是true时,二者都会执行符号右边的运算

  不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算(两个的会短路)。

开发中,推荐使用&&,效率高

|   ||   或

相同点1:| 与 || 的运算结果相同
相同点2:当符号左边是false时,二者都会执行符号右边的运算
  不同点:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算(两个的会短路)。
开发中,推荐使用||,效率高

!  非

反转操作数的逻辑状态

5.位运算符:<<  >> >>> &  |  ^  ~

如果相对应位都是1,则结果为1,否则为0
| 如果相对应位都是 0,则结果为 0,否则为 1
^ 如果相对应位值相同,则结果为0,否则为1
? 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
<<  按位左移运算符。左操作数按位左移右操作数指定的位数。
>>  按位右移运算符。左操作数按位右移右操作数指定的位数。
>>>  按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

6.三元运算符:(条件表达式)? 表达式1 : 表达式2

① 条件表达式的结果为boolean类型

② 根据条件表达式真或假,决定执行表达式1,还是表达式2

  如果表达式为true,则执行表达式1。

  如果表达式为false,则执行表达式2。

③ 表达式1 和表达式2要求是一致的。

④ 三元运算符可以嵌套使用

⑤凡是可以使用三元运算符的地方,都可以改写为if-else。反之,不成立,不一定都可以。

⑥如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。

以上是关于运算符的主要内容,如果未能解决你的问题,请参考以下文章

20个简洁的 JS 代码片段

20个简洁的 JS 代码片段

如何在 python 中并行化以下代码片段?

JSP 基础语法

获取 badarith,[erlang,'+',[error,0],[],同时使用 Erlang 片段在 TSUNG 中执行算术运算

中继片段传播不起作用