2017年計(jì)算機(jī)二級(jí)JAVA考點(diǎn)解析:運(yùn)算符和表達(dá)式

字號(hào):


    運(yùn)算符指明對(duì)操作數(shù)所進(jìn)行的運(yùn)算。按操作數(shù)的數(shù)目來(lái)分,可以有一元運(yùn)算符(如++、--),二元運(yùn)算符(如+、>)和三元運(yùn)算符(如?:),它們分別對(duì)應(yīng)于一個(gè)、兩個(gè)和三個(gè)操作數(shù)。對(duì)于一元運(yùn)算符來(lái)說(shuō),可以有前綴表達(dá)式(如++i)和后綴表達(dá)式(如i++),對(duì)于二元運(yùn)算符來(lái)說(shuō)則采用中綴表達(dá)式(如a+b)。按照運(yùn)算符功能來(lái)分,基本的運(yùn)算符有下面幾類:
    1.算術(shù)運(yùn)算符(+,-,*,/,%,++,--)
    2.關(guān)系運(yùn)算符(>,<,>=,<=,==,!=)
    3.布爾邏輯運(yùn)算符(!,&&,||)
    4.位運(yùn)算符(>>,<<,>>>,&,|,^,~)
    5.賦值運(yùn)算符(=,及其擴(kuò)展賦值運(yùn)算符如+=)
    6.條件運(yùn)算符(?:)
    7.其它(包括分量運(yùn)算符·,下標(biāo)運(yùn)算符[],實(shí)例運(yùn)算符instanceof,內(nèi)存分配運(yùn)算符new,強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型),方法調(diào)用運(yùn)算符()等)
    本章中我們主要講述前6類運(yùn)算符。
    3.1算術(shù)運(yùn)算符
    算術(shù)運(yùn)算符作用于整型或浮點(diǎn)型數(shù)據(jù),完成算術(shù)運(yùn)算。
    一、二元算術(shù)運(yùn)算符,如下表所示
    運(yùn)算符用法描述
    +op1+op2加
    -op1-op2減
    *op1*op2乘
    /op1/op2除
    %op1%op2取模(求余)
    Java對(duì)加運(yùn)算符進(jìn)行了擴(kuò)展,使它能夠進(jìn)行字符串的連接,如"abc"+"de",得到串"abcde"。我們將在第七章中講解。
    與C、C++不同,對(duì)取模運(yùn)算符%來(lái)說(shuō),其操作數(shù)可以為浮點(diǎn)數(shù),如37.2=7.2。
    二、一元算術(shù)運(yùn)算符,如下表所示:
    運(yùn)算符用法描述
    ++op正值
    --op負(fù)值
    ++++op,op++加1
    ----op,op--減1
    i++與++i的區(qū)別
    i++在使用i之后,使i的值加1,因此執(zhí)行完i++后,整個(gè)表達(dá)式的值為i,而i的值變?yōu)閕+1。
    ++i在使用i之前,使i的值加1,因此執(zhí)行完++i后,整個(gè)表達(dá)式和i的值均為i+1。
    對(duì)i--與--i同樣。
    例3.1.下面的例子說(shuō)明了算術(shù)運(yùn)算符的使用
    publicclassArithmaticOp{
    publicstaticvoidmain(Stringargs[]){
    inta=5+4;//a=9
    intb=a*2;//b=18
    intc=b/4;//c=4
    intd=b-c;//d=14
    inte=-d;//e=-14
    intf=e%4;//f=-2
    doubleg=18.4;
    doubleh=g%4;//h=2.4
    inti=3;
    intj=i++;//i=4,j=3
    intk=++i;//i=5,k=5
    System.out.println("a="+a);
    System.out.println("b="+b);
    System.out.println("c="+c);
    System.out.println("d="+d);
    System.out.println("e="+e);
    System.out.println("f="+f);
    System.out.println("g="+g);
    System.out.println("h="+h);
    System.out.println("i="+i);
    System.out.println("j="+j);
    System.out.println("k="+k);
    }
    }
    其結(jié)果為:
    C:\>javaArithmaticOp
    a=9
    b=18
    c=4
    d=14
    e=-14
    f=-2
    g=18.4
    h=2.4
    i=5
    j=3
    k=5
    3.2關(guān)系運(yùn)算符
    關(guān)系運(yùn)算符用來(lái)比較兩個(gè)值,返回布爾類型的值true或false。關(guān)系運(yùn)算符都是二元運(yùn)算符,如下表所示:
    運(yùn)算符用法返回true的情況
    >op1>op2op1大于op2
    >=op1>=op2op1大于或等于op2
    <o(jì)p1<o(jì)p2op1小于op2
    <=op1<=op2op1小于或等于op2
    ==op1==op2op1與op2相等
    !=op1!=op2op1與op2不等
    Java中,任何數(shù)據(jù)類型的數(shù)據(jù)(包括基本類型和組合類型)都可以通過(guò)==或!=來(lái)比較是否相等(這與C、C++不同)。
    關(guān)系運(yùn)算的結(jié)果返回true或false,而不是C、C++中的1或0。
    關(guān)系運(yùn)算符常與布爾邏輯運(yùn)算符一起使用,作為流控制語(yǔ)句的判斷條件。如
    if(a>b&&b==c)
    3.3布爾邏輯運(yùn)算符
    布爾邏輯運(yùn)算符進(jìn)行布爾邏輯運(yùn)算,如下表所示:
    op1op2op1&&op2op1||op2!op1
    falsefalsefalsefalsetrue
    falsetruefalsetruetrue
    truefalsefalsetruefalse
    truetruetruetruefalse}
    ·&&、‖為二元運(yùn)算符,實(shí)現(xiàn)邏輯與、邏輯或。
    ·!為一元運(yùn)算符,實(shí)現(xiàn)邏輯非。
    ·對(duì)于布爾邏輯運(yùn)算,先求出運(yùn)算符左邊的表達(dá)式的值,對(duì)或運(yùn)算如果為true,則整個(gè)表達(dá)式的結(jié)果為true,不必對(duì)運(yùn)算符右邊的表達(dá)式再進(jìn)行運(yùn)算;同樣,對(duì)與運(yùn)算,如果左邊表達(dá)式的值為false,則不必對(duì)右邊的表達(dá)式求值,整個(gè)表達(dá)式的結(jié)果為false。
    下面的例子說(shuō)明了關(guān)系運(yùn)算符和布爾邏輯運(yùn)算符的使用。
    publicclassRelationAndConditionOp{
    publicstaticvoidmain(Stringargs[]){
    inta=25,b=3;
    booleand=a<b;//d=false
    System.out.println("a<b="+d);
    inte=3;
    if(e!=0&&a/e>5)
    System.out.println("a/e="+a/e);
    intf=0;
    if(f!=0&&a/f>5)
    System.out.println("a/f="+a/f);
    else
    System.out.println("f="+f);
    }
    }
    其運(yùn)行結(jié)果為:
    C:\>javaRelationAndConditionOp
    a<b=false
    a/e=8
    f=0
    注意:上例中,第二個(gè)if語(yǔ)句在運(yùn)行時(shí)不會(huì)發(fā)生除0溢出的錯(cuò)誤,因?yàn)閑!=0為false,所以就不需要對(duì)a/e進(jìn)行運(yùn)算。