Java运算符

Posted 放弃不难,但坚持一定很酷

tags:

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

3.运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。包括:算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符。

3.1算术运算符:

正号: + 负号: -

加号: + 减号: -  乘号: * 除号:  / 取模: %

前/后置加: ++ 前/后置减 –

连接符: +

 

注意:1)除:/

              int i = 12;

              int j = i/5;

              double d = i / 5;

              double d1 = i/5.0;

              System.out.println(j);//2

              System.out.println(d);//2.0

              System.out.println(d1);//2.4

         2)取模:%:取余数. 结果的符号取决于被模数(%左边的数)

              int i1 = 12 % 5;

              int i2 = -12 % 5;

              int i3 = 12 % (-5);

              int i4 = -12 % (-5);

              System.out.println(i1);//2

              System.out.println(i2);//-2

              System.out.println(i3);//2

              System.out.println(i4);//-2

         3)前++:先自增1,后做运算;后++:先做运算,后自增1

--------------------------------------------------------------------------

              int myInt1 = 10;

              int myInt2 = myInt1++;//++

              System.out.println(myInt1);//11

              System.out.println(myInt2);//10

------------------------------------------------------------------------

              int myInt3 = 10;

              int myInt4 = ++myInt3;//++

              System.out.println(myInt3);//11

              System.out.println(myInt4);//11

-----------------------------------------------------------------------------

           4)连接符 +String字符串与其他数据类型只能做连接运算,且结果为String类型。

“+”除字符串相加功能外,还能把非字符串转换成字符串。

【举例】:

class Testjia

{

           public static void main(String[] args)

           {

              System.out.println("5+5="+5+5); //输出:5+5=55

              System.out.println(\'*\' + \'\\t\' +\'*\');//输出:93

        System.out.println("*" + \'\\t\' +\'*\');//输出:*        *

           }

}

3.2赋值运算符:

=    +=   -=  *=    /=   %=

 

【举例】

int i= 12;

i  = i * 5;

i *= 5;//与上一行代码同样的意思

 

【注意】

short s = 10;

s = s + 5;//报编译的异常

s = (short)(s + 5);//不建议如此实现,容易损失精度

s += 5;//既可以实现运算,又不会改变s的数据类型。

3.3比较运算符(关系运算符)

==  !=

>   <  > =   <=   

instanceof  检查是否是类的对象

【举例】

范例

结果

“Hello”  instanceof  String

true

“Hello”  instanceof  System

false

【注意】

①  区分 ==  与 =  区别。

②  进行比较运算操作以后,返回一个boolean类型的值,要么是true,要么是false。

4 >= 3  表达的是4 > 3或者 4 = 3。结果是true。

③if(i > 1 && i < 10){  }   不能写为:if(1 < i < 10){  }

 

3.4逻辑运算符(运算符的两端是boolean值)

&   逻辑与       |  逻辑或         ! 逻辑非

&&  短路与       ||  短路或        ^  逻辑异或

a

b

a&b

a|b

!a

a^b

a&&b

a||b

true

true

true

true

false

false

true

true

true

false

false

true

false

true

false

true

false

true

false

true

true

true

false

true

false

false

false

false

true

false

false

false

【注意】

①逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

“&”“&&”的区别:

  • 单&时,左边无论真假,右边都进行运算;
  • 双&时,如果左边为真,右边参与运算,如果左边为假,则右边不参与运算。

“|”“||”区别同理,||时:左边为真,右边不参与运算。我们使用的时候,选择&&||

③异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

  理解:异或,追求的是”!

3.5位运算符(两端是数值类型的数据)

 位运算是直接对二进制进行运算,注意:无<<<(无符号左移)

运算符

运算

范例

<< 

左移

3 << 2 = 12 --> 3*2*2=12 ;m<<n结果:m*(2^n)

>> 

右移

3 >> 1 = 1--> 3/2=1 ;m>>n结果:m/(2^n)

>>> 

无符号右移

3 >>> 1 = 1 --> 3/2=1;m>>>n结果:m/(2^n)

&

与运算

6 & 3 = 2

|

或运算

6 | 3 = 7

^

异或运算

6 ^ 3 = 5

~

反码

~6 = -7

【规则】

①     左移(二进制左移n位,低位补0)有限度,正数的二进制左移后,首位变1了就错了

②     右移:二进制右移n位,原来最高位是几,高位就补几

③     无符号右移:二进制右移n位,无论高位是几,高位都补0

④     与运算:左右两端数的二进制所对应位都是1则变1,否则为0,所得二进制数为结果

⑤     或运算:左右两端数的二进制所对应位至少有一个是1则变1,否则为0,所得二进制数为结果

⑥     异或运算:左右两端数的二进制所对应位不同则变1,否则为0,所得二进制数为结果

⑦     反码:该数的二进制对应位1变0,0变1,最后所得二进制数为结果

【小练习】

交换两个变量的值

//方法一:提供一个临时变量。

              Int  temp = m;

                  m = n;

                     n = temp;

              System.out.println("m:" + m + " n:" + n);

 

//方法二:当mn较大时,有可能出现精度损失

              m = m + n;//m = 12 + 5;

              n = m - n;//n = 17 - 5;

              m = m - n;//m = 17- 12

              System.out.println("m:" + m + " n:" + n);

 

//方法三:优点:没有上面两种方法的缺点。缺点:难!

              m = m ^ n;

              n = m ^ n; //(m ^ n) ^ n == m

              m = m ^ n; //(m ^ n) ^ m == n

              System.out.println("m:" + m + " n:" + n);

3.6三元运算符

(条件表达式)表达式1 表达式2

若条件表达式结果为true运算后的结果是表达式1

若条件表达式结果为false运算后的结果是表达式2

【注意】

①  既然是运算符,一定会返回一个结果,并且结果的数据类型与表达式1,2的类型一致

②  表达式1与表达式2 的数据类型一致。

③  三元运算符与if-else的联系与区别:三元运算符可简化if-else语句;三元运算符要求必须返回一个结果;if后的代码块可有多个语句;使用三元运算符的,一定可以转换为if-else,反之不一定成立。

【小练习】如何使用三元运算符,输出三个数中的较大值。

              int m = 12;int n = 23;int k = -9;

              int max1 = (m > n)? m : n;

    int max2 = (max1 > k)? max1 : k;

              System.out.println(max2);

3.7运算符的优先级

●运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行;只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

【小练习】输出60的十六进制。

              int i = 60;

              //法一:自动调用Integer类现成的方法

              String binary = Integer.toBinaryString(i);System.out.println(binary);

              String hex = Integer.toHexString(i);System.out.println(hex);

       //法二:手动的方式,从控制台输出60的十六进制。

              /*

              char c = \'a\';

              char c1 = (char)(c + 2);

              System.out.println(c1);//c

              */

              int j = i & 15;//获取到i的最低4位对应的值。

              String k1 = (j <= 9)? j + "" : (char)(j - 10 + \'a\') + "";

              i = i >> 4;

              int z = i & 15;

              String k2 = (z <= 9)? z + "" : (char)(z - 10 + \'a\') + "";

              System.out.println(k2 + k1);

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

Java基础—Java流程控制

java中的位运算符及其用法。

Java 基本语法---Java运算符

java位移运算符有啥意义

Java 基础之java运算符

Java三目运算符