zoukankan      html  css  js  c++  java
  • java中的运算符

    一:概述:

    Java的运算符,分为四类:

      算数运算符关系运算符逻辑运算符、位运算符。

        算数运算符(9):+  -  *  /  %  ++  --

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

        逻辑运算符(6):&&  ||  !  ^  &  |

        位运算符(7):&  |  ~  ^  >>  <<  >>>

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

    Java基本数据类型:

      数值类型:

        整型:byte、short、int、long

        非整型:double、float

      非数值类型:char[字符]、boolean[布尔]

     二:算术运算符:

      注:算数运算符操作数必须是数值类型   

      分为一元运算(只有一个操作数)、二元运算(有两个操作数,运算符在两个操作数之间)

      ①”++“和”--“运算符,只允许用于数值类型的变量,不允许用于表达式中;"++"和”--“可以用于数值变量之前或者之后;

       两处使用差别:

               ”++“和”--“用于数值变量之前,在赋值操作中,先对被”++“或”--“操作变量值先加1或者先减1,然后在进行其他的操作;

               "++"和”--“用于数值变量之后,在赋值操作中,先用被”++“或”--“的操作变量值进行其他的操作,然后在对其值加1或者减1。

       例如:

    1 package nums;
    2 
    3 public class Test1 {
    4     public static void main(String[] args) {
    5         int num1=20,num2=20;
    6         System.out.println(++num1);
    7         System.out.println(num2++);
    8     }
    9 }

     输出的结果为:

      用“--”的效果和“++”是一样的

     ②:二元运算符,加'+'减'-'乘'*'除'/'求余'%'

      在算数运算符中,”+“,”-“,”*“,”/“完成加减乘除四则运算,%是求两个操作数相除后的余数。运算规则和数学运算基本相同,在算数运算中,计算时按照从左向右的顺序计算,乘除和求余优先于加减,不同的是,程序中的乘运算符不可省略,在数学中可写为”y=2x“而程序中必须写为”y=2*x“。

      当二元运算的两个操作数的数据类型不同时,运算结果的数据类型和参与运算的操作数的数据类型中精度较高(或位数较长)一致。

     1 package nums;
     2 
     3 public class Test2 {
     4     public static void main(String[] args) {
     5         int num1=10;
     6         int num2=22;
     7         double num3=52.2;
     8         System.out.println("加:"+num1+num2);
     9         System.out.println("减:"+(num1-num2));
    10         System.out.println("乘:"+num2*num3);//会提升精度
    11         System.out.println("除:"+num3/num1);
    12         System.out.println("求余:"+num1%num2);
    13     }
    14 }

     

    低精度向高精度转换byte 、short、int、long、float、double低精度到高精度会自动转换,而高精度到低精度则要类型强制转换。

      1 int a = 7; 2 double b = 5.33; 3 b = a; 4 a = (int) b;  

     二:关系运算符: 

      关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型(boolean布尔类型)的数值。

      等于'=='不等于'!='大于'>'大于等于'>='小于'<'小于等于'<='

     1 package nums;
     2 
     3 public class Test3 {
     4     public static void main(String[] args) {
     5         System.out.println("9.5<8 :"+(9.5<8));  
     6         System.out.println("8.5<=8.5:"+(8.5<=8.5));  
     7         System.out.println("a~z:"+((int)'a')+"~"+((int)'z'));  
     8         System.out.println("A~Z:"+((int)'A')+"~"+((int)'Z'));  
     9         System.out.println("'A' < 'a':"+('A' < 'a'));//字符'A'的Unicode编码值小于字符'a'  
    10     }
    11 }

     

      判断相等的符号是两个等号,而不是一个等号,这个需要特别小心。比较运算符是程序设计中实现数据比较的基础,也是很多逻辑实现的基础,在程序逻辑中,经常通过比较一定的条件,来判断后续的程序该如何执行。

     三:逻辑运算符:

       逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。  

       逻辑与'&&',逻辑或'||',逻辑非'!',逻辑异或'^',逻辑与'&',逻辑或'|'

        注:

      &和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。

         对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。 所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。 对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。

         对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。 所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。

       异或相同为false,相反则为true。

       在程序设计时使用&&和||运算符,不建议使用&和|运算符。

     四:位运算符:

    位运算是以二进制位为单位进行的运算,也就是说,会把十进制数先转换为二进制进行运算;

    ①十进制二进制的相互转化:

      ②左移(<<):

    1 package nums;
    2 
    3 public class Test4 {
    4 public static void main(String[] args) {
    5    System.out.println(5 << 2);// 运行结果是20
    6 }
    7 }

       

    运行过程:先把5转换为二进制   0101

         然后进行位移,向左位移2位

         也就是00010100

         转换为十进制为20;

      

      ②右移(>>):

    1 package nums;
    2 
    3 public class Test4 {
    4 public static void main(String[] args) {
    5    System.out.println(5 << 2);// 运行结果是20
    6    
    7    System.out.println(5 >> 2);
    8 }
    9 }

     

     运行原理和左移是一样的;

     ③、无符号右移( >>> ) 

      运行原理:得到二进制数

           取反值

           加1

    1 package nums;
    2 
    3 public class Test5 {
    4 public static void main(String[] args) {
    5     System.out.println(5>>>2);
    6 }
    7 }

     

      ④:按位与(&)

       只有两个操作数对应位同为1时,结果为1,其余全为0.

       例如:

      

      ⑤:按位或(|)

       只有两个操作数对应位同为0时,结果为0,其余全为1.

       ⑥:异或(^)

       当运算符两边不同的时候结果为1,两边相同的时候结果为0 这就是传说中的同性相杀,异性相吻。

       8^6=1000^0110=1110=14

       ⑦:按位非(~)

       非运算符理解起来很容易的,就是按位取反

  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/GH0522/p/8297362.html
Copyright © 2011-2022 走看看