Java基礎(chǔ) - 類型和運(yùn)算

11.類型和運(yùn)算

11.1進(jìn)制

對(duì)于任何一種進(jìn)制---X進(jìn)制,就表示某一位置上的數(shù)運(yùn)算時(shí)是逢X進(jìn)一位后自己歸0桦他。 十進(jìn)制是逢十進(jìn)一装悲,十六進(jìn)制是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一总棵,以此類推,x進(jìn)制就是逢x進(jìn)位。

計(jì)算機(jī)中的進(jìn)制:

  • 二進(jìn)制:由兩個(gè)基本數(shù)字0,1組成钝域,運(yùn)算規(guī)律是逢二進(jìn)一。計(jì)算機(jī)都使用二進(jìn)制存儲(chǔ)數(shù)據(jù).
  • 八進(jìn)制:由0锭魔、1例证、2、3迷捧、4织咧、5、6漠秋、7組成,運(yùn)算規(guī)律是逢八進(jìn)一.
  • 十進(jìn)制:由0笙蒙,1,2庆锦、3捅位、4、5搂抒、6艇搀、7、8燕耿、9組成.
  • 十六進(jìn)制:由0~9以及A中符,B,C誉帅,D淀散,E,F(xiàn)組成.

二進(jìn)制數(shù)系統(tǒng)中蚜锨,位簡(jiǎn)記為b,也稱為比特档插,位是數(shù)據(jù)存儲(chǔ)的最小單位.

每個(gè)二進(jìn)制數(shù)字0或1就是一個(gè)位(bit)。其中8 bit 就稱為一個(gè)字節(jié)(Byte)

  • 1B(byte亚再,字節(jié))= 8 bit郭膛;
  • 1KB(Kibibyte,千字節(jié))= 1024B氛悬;
  • 1MB(Mebibyte则剃,兆字節(jié),百萬(wàn)字節(jié)如捅,簡(jiǎn)稱“兆”)=1024KB棍现;
  • 1GB(Gigabyte,吉字節(jié)镜遣,十億字節(jié)己肮,又稱“千兆”)=1024MB;
  • 1TB(Terabyte,萬(wàn)億字節(jié)谎僻,太字節(jié))=1024GB娄柳;

進(jìn)制的轉(zhuǎn)換:

  • 十進(jìn)制和X進(jìn)制之間轉(zhuǎn)換:

    十進(jìn)制--->八進(jìn)制/十六進(jìn)制/X進(jìn)制

    十進(jìn)制轉(zhuǎn)X進(jìn)制,使用倒除法艘绍,讓被除數(shù)每次都除以X赤拒,所得的商如果大于了X,那繼續(xù)除鞍盗,并且記錄好每次所除留下來(lái)的余數(shù)需了,然后把最后留下的商和余數(shù)的反寫拼在一起就是結(jié)果

  • X進(jìn)制和十進(jìn)制之間轉(zhuǎn)換

    八進(jìn)制/十六進(jìn)制/X進(jìn)制 ---> 十進(jìn)制:

    X進(jìn)制轉(zhuǎn)十進(jìn)制,把這個(gè)X進(jìn)制數(shù)從末位開始分別乘以X的n-1次方(n表示第幾個(gè)數(shù)位)般甲,所得的權(quán)再相加

11.2 原碼 反碼 補(bǔ)碼###

在計(jì)算機(jī)內(nèi)肋乍,有符號(hào)數(shù)有3種表示法:原碼、反碼和補(bǔ)碼

所有數(shù)據(jù)的運(yùn)算都是采用補(bǔ)碼進(jìn)行的,存儲(chǔ)也是用補(bǔ)碼

  1. 原碼

    最高位為符號(hào)位敷存,“0”表示正墓造,“1”表示負(fù),其余位表示數(shù)值的大小

  2. 反碼

    正數(shù)的反碼與原碼一樣

    負(fù)數(shù)的反碼是對(duì)其原碼逐位取反锚烦,但符號(hào)位除外觅闽。

  3. 補(bǔ)碼

    正數(shù)的補(bǔ)碼與原碼一樣

    負(fù)數(shù)的補(bǔ)碼是在其反碼的末位加1。

例子:

+3(0000 0011) 

原碼,反碼,補(bǔ)碼都是0000 0011

-3(1000 0011) 

原碼:1000 0011    反碼:1111 1100  補(bǔ)碼:1111 1101

11.3 常量和變量

  1. 常量

    常量分類:

    • 字面量/直接量:一個(gè)寫死的固定不變的值涮俄,如整數(shù)1/2/3/110等等蛉拙。小數(shù)3.14。布爾常量true/false等

    • final修飾的變量

  2. 變量

    • 變量的特點(diǎn):

      1. 占據(jù)著內(nèi)存中的某一塊存儲(chǔ)區(qū)域彻亲;

      2. 該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型)孕锄;

      3. 可以被重復(fù)使用;

      4. 該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化;

    • 定義變量的語(yǔ)法:

      1. 先定義變量,再賦值:

        數(shù)據(jù)類型 變量名;

        變量名 = 值;

      2. 或在聲明時(shí)同時(shí)賦值:

        數(shù)據(jù)類型 變量名 = 初始化值;

11.4 數(shù)據(jù)類型

分類

  1. 基本數(shù)據(jù)類型苞尝,又稱為原生數(shù)據(jù)類型畸肆;

    1. 整數(shù)型: byte、short宙址、int 轴脐、long

    2. 浮點(diǎn)數(shù)型:float、double

    3. 字符型: char

    4. 布爾型: boolean

  1. 引用數(shù)據(jù)類型抡砂,又稱為對(duì)象數(shù)據(jù)類型大咱,包括類,接口注益,數(shù)組等徽级;

基本數(shù)據(jù)類型

  1. 布爾型boolean

    1位, 該類型的值只能是true 或 false,表示真或假聊浅。

  2. 整數(shù)類型

      類型     占位(字節(jié))      范圍
     byte        1       [-128 ~ 127]
              
     short       2       [-32768 ~ 32767]
              
     int         4       [-21E ~ 21E]
              
     long        8       [-9*10^18 ~ 9 *10^18]
    
    • 一個(gè)整型的字面量默認(rèn)是int類型.

    • 聲明long型變量后加上‘l’或‘L’,因小寫的l容易和數(shù)字1相混淆,建議使用大寫L低匙。

  3. 浮點(diǎn)型

     類型     占位(字節(jié))      范圍
    float           4       [-3.4E38 ~ 3.4E38]   

    double          8       [-1.7E308 ~ 1.7E38] 

- float表示單精度類型旷痕,double表示雙精度類型,但是二者都不能表示精確的小數(shù)顽冶。

- Java的浮點(diǎn)類型常量有兩種表現(xiàn)形式:
 
    - 十進(jìn)制形式: 例如:3.14 欺抗,168.0, 0.618
    
    - 科學(xué)計(jì)數(shù)法形式: 例如:3.14e2强重, 3.14E2绞呈, 1000E-2
     
    - 科學(xué)計(jì)數(shù)法表達(dá)式返回的結(jié)果是double類型。

- 一個(gè)浮點(diǎn)類型的字面量默認(rèn)是double類型

- 若要聲明一個(gè)常量為float型间景,則需在常量后加上f  或 F佃声,double常量后面的D或d可省略。

- 注意:Java里只有浮點(diǎn)型的變量才可以接受科學(xué)計(jì)算式結(jié)果
  1. 字符型

    • char類型倘要,只能存儲(chǔ)1個(gè)字符圾亏,使用的是16位的無(wú)符號(hào)整數(shù)或者Unicode字符,Java對(duì)字符采用Unicode字符編碼

    • Unicode是一種跨平臺(tái)的編碼方式封拧,Java的字符占兩個(gè)字節(jié)志鹃,可以表示一個(gè)漢字。

    char常量的主要表示形式:

    • 直接使用單個(gè)字符來(lái)指定字符常量泽西,格式如'◆'曹铃、'A','7'捧杉;

    • 直接作為整數(shù)類型使用陕见,但是數(shù)據(jù)范圍在[0,65535]糠溜,格式如97淳玩,但是打印出來(lái)的值依然是ASCII碼表對(duì)應(yīng)的圖,如97打印出來(lái)是字符a。

轉(zhuǎn)義字符

\ 就是轉(zhuǎn)義字符

  1. 將普通字符轉(zhuǎn)為特殊用途非竿,一般是編程語(yǔ)言中蜕着,用于表示不能直接顯示的字符。

     tab建 --> \t     換行 --> \n
    
  2. 用來(lái)將特殊意義的字符轉(zhuǎn)換回它原來(lái)的意義红柱。

     雙引號(hào)(")承匣,單引號(hào)('),反斜線(\)
    

類型轉(zhuǎn)換

  • boolean不屬于數(shù)值類型,不參與轉(zhuǎn)換.

  • short與char不能相互轉(zhuǎn)換

  • 自動(dòng)類型轉(zhuǎn)換

    也稱為“隱式類型轉(zhuǎn)換"

    • 當(dāng)把小數(shù)據(jù)范圍類型的數(shù)值或變量賦給另一個(gè)大數(shù)據(jù)范圍類型變量锤悄,系統(tǒng)可以完成自動(dòng)類型轉(zhuǎn)型韧骗。

    • 當(dāng)常量值在變量范圍內(nèi),會(huì)自動(dòng)轉(zhuǎn)換, byte b1 = 100;

  • 強(qiáng)制類型轉(zhuǎn)換

    也稱為“顯示類型轉(zhuǎn)換"

    • 當(dāng)把大范圍類型的數(shù)值或變量賦給另一個(gè)小范圍類型變量時(shí),此時(shí)系統(tǒng)不能自動(dòng)完成轉(zhuǎn)換零聚,需要加上強(qiáng)制轉(zhuǎn)換符

    • 可能造成數(shù)據(jù)精度的降低或溢出袍暴,所以使用時(shí)要格外注意些侍。

        byte a = (byte)128; //輸出 a 的值為 -128
      
        原因: 128 默認(rèn)是int型  0000 00000 0000 0000 0000 0000 1000 0000   以int類型計(jì)算十進(jìn)制值為128
        
        強(qiáng)制轉(zhuǎn)換成byte類型后    1000 0000  此時(shí)以byte類型計(jì)算十進(jìn)制值為-128
      
  • 表達(dá)式類型的自動(dòng)提升

    當(dāng)一個(gè)算術(shù)表達(dá)式中包含多個(gè)基本數(shù)據(jù)類型(boolean除外)的值時(shí),整個(gè)算術(shù)表達(dá)式的數(shù)據(jù)類型將在數(shù)據(jù)運(yùn)算時(shí)出現(xiàn)類型自動(dòng)提升

    提升規(guī)則:

    1. 所有的byte政模、short岗宣、char類型被自動(dòng)提升到int類型;

    2. 整個(gè)表達(dá)式的最終結(jié)果類型被提升到表達(dá)式中類型最高的類型淋样;

    基本類型中只要看到了double參與運(yùn)算,結(jié)果一定是double

11.5 Java運(yùn)算符

  1. 算術(shù)運(yùn)算符

    • 加號(hào):在操作數(shù)值耗式、字符、字符串時(shí)其結(jié)果是不同的

      • 當(dāng)兩個(gè)字符相加得到的是ASCII碼表值趁猴,

      • 當(dāng)兩個(gè)字符串相加時(shí)表示將兩個(gè)字符串連接在一起刊咳,從而組成新的字符串。

    • 除號(hào):整數(shù)在使用除號(hào)操作時(shí)儡司,得到的結(jié)果仍為整數(shù)(小數(shù)部分忽略)娱挨,當(dāng)整數(shù)除以0的時(shí)候,會(huì)引發(fā)算術(shù)異常枫慷。

        正無(wú)窮大(Infinity):正整數(shù)除以0.0時(shí);
        負(fù)無(wú)窮大(-Infinity):負(fù)整數(shù)除以0.0時(shí);
        NaN(Not a Number):當(dāng)0.0除以0.0時(shí)让蕾,浮點(diǎn)數(shù)或整數(shù)%0.0
      
    • 取模:模數(shù)的符號(hào)忽略不計(jì),結(jié)果的正負(fù)取決于被模數(shù).

        5 % -2  輸出1
      
    • 無(wú)窮大和NaN都屬于double浮點(diǎn)類型,但是所有正無(wú)窮大都是相等的,所有負(fù)無(wú)窮大也是相等的,NaN永遠(yuǎn)不相等,也不等于自己.

    • 數(shù)據(jù)溢出問(wèn)題:

        int max = 2147483647;
        int min = -2147483648;
      
        max + 1     輸出-2147483648
        min - 1         輸出2147483647
      
    • 自增:++或听,遞增操作符探孝,使變量值增加1,有前置和后置之分誉裆,只能操作變量顿颅。

      唯一的區(qū)別是:

      • 前置(++result): result+1 之后再輸出值

      • 后置(result++): 先輸出值,再result+1。

      如果僅僅執(zhí)行簡(jiǎn)單的遞增操作(只寫result++或++result)足丢,那么選用任意一個(gè)都可以粱腻。

    • 自減: -- ,遞減操作符斩跌,使變量值減去1绍些,有前置和后置之分,只能操作變量耀鸦。

  2. 賦值運(yùn)算符

    專門為變量指定值或重新指定值

     =   賦值
     +=  -=  *=  /=  %=
    
  3. 比較運(yùn)算符

     ==:等于柬批,若比較的是兩個(gè)操作數(shù)都是數(shù)值類型,即使他們的類型不同袖订,只要值相同就返回true氮帐。 
    
     !=   <  >   <=  >=
    
     instanceof  檢查是否是類的對(duì)象
    
  4. 三元運(yùn)算符

    語(yǔ)法格式:X ? Y :Z,

    其中x為boolean類型表達(dá)式洛姑,先計(jì)算X的值上沐,若X結(jié)果為true則整個(gè)三目運(yùn)算表達(dá)式的結(jié)果是Y,否則就是Z

  5. 邏輯運(yùn)算符

    用于操作兩個(gè)boolean類型的變量或常量楞艾,結(jié)果類型也是boolean参咙。

     &:  表示并且龄广,當(dāng)操作數(shù)A和B都為true結(jié)果才為true,否則結(jié)果result 是false昂勒。
    
     &&: 和&結(jié)果相同蜀细,具有短路效果,如果左邊操作數(shù)A是false戈盈,result 一定為false,且不運(yùn)行B的運(yùn)算谆刨。
    
     |:  表示或者塘娶,A和B都為false結(jié)果result為false,只要有A或B是true痊夭,結(jié)果就是true刁岸。
    
     ||: 和|結(jié)果相同,具有短路效果她我,如果左邊操作數(shù)A是true虹曙,result一定為true,且不運(yùn)行B的運(yùn)算番舆。
    
     ^:  判斷A和B是否不同酝碳,不同則為true,相同則為false恨狈。
    
     !:  取反疏哗,!true結(jié)果是false,!fasle結(jié)果是true禾怠。
    
  6. 位運(yùn)算符

    遵循規(guī)則:1相當(dāng)于true返奉,0相當(dāng)于false

    &:參與運(yùn)算的兩個(gè)數(shù),若相應(yīng)位數(shù)的值都為1吗氏,則該位結(jié)果值是1芽偏,否則是0。

    |:參與運(yùn)算的兩個(gè)數(shù)相應(yīng)位中只要有一個(gè)1弦讽,結(jié)果就是1污尉。

    ^:參與運(yùn)算的兩個(gè)數(shù)相應(yīng)位相同則結(jié)果為0,否則為1坦袍。

    ~ :表示把每個(gè)二進(jìn)制位的“1”換成“0”十厢,把“0”換成“1”。

    << : 左移位

    >> : 右移位 補(bǔ)位是使用源數(shù)據(jù)的最高位來(lái)補(bǔ)

    >>> : 無(wú)符號(hào)右移位 補(bǔ)位都用0來(lái)補(bǔ),不管最高位是什么

    示例代碼:

      //0b開頭表示二進(jìn)制數(shù), _是用來(lái)區(qū)分位數(shù)
      int num1 = 0b0000_0000_0000_0000_0000_0000_0000_0101 //5
      int num2 = 0b0000_0000_0000_0000_0000_0000_0000_0011 //3
    
     num1 & num2     //...0000_0001 ->1
     num1 | num2     //...0000_0111 ->7
     num1 ^ num2     //...0000_0110 ->6
    
     ~num2           
     //取反后:0b1111_1111_1111_1111_1111_1111_1111_1100  為負(fù)數(shù)
     負(fù)數(shù)則需要取補(bǔ)碼來(lái)計(jì)算,補(bǔ)碼為...0000_0100 ->4
    
     num2 << 2   //0b0000_0000_0000_0000_0000_0000_0000_1100 ->12
    
     num1 >> 2    //0b0000_0000_0000_0000_0000_0000_0000_0001 
    
     -num1       //11111111111111111111111111111011 -->計(jì)算出來(lái)的是-3的補(bǔ)碼
    
     -num1 >> 2      //補(bǔ)位都用0: 00111111111111111111111111111110 ->1073741822
    
     -num1 >>> 2     //補(bǔ)位用最高位: 11111111111111111111111111111110 ->負(fù)數(shù)用補(bǔ)碼計(jì)算:-2
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捂齐,一起剝皮案震驚了整個(gè)濱河市蛮放,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奠宜,老刑警劉巖包颁,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞻想,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡娩嚼,警方通過(guò)查閱死者的電腦和手機(jī)蘑险,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岳悟,“玉大人佃迄,你說(shuō)我怎么就攤上這事」笊伲” “怎么了呵俏?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滔灶。 經(jīng)常有香客問(wèn)我普碎,道長(zhǎng),這世上最難降的妖魔是什么录平? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任麻车,我火速辦了婚禮,結(jié)果婚禮上斗这,老公的妹妹穿的比我還像新娘动猬。我一直安慰自己,他們只是感情好涝影,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布枣察。 她就那樣靜靜地躺著,像睡著了一般燃逻。 火紅的嫁衣襯著肌膚如雪序目。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天伯襟,我揣著相機(jī)與錄音猿涨,去河邊找鬼。 笑死姆怪,一個(gè)胖子當(dāng)著我的面吹牛叛赚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稽揭,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼俺附,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了溪掀?” 一聲冷哼從身側(cè)響起事镣,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揪胃,沒(méi)想到半個(gè)月后璃哟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氛琢,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年随闪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阳似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铐伴,死狀恐怖撮奏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情当宴,我是刑警寧澤挽荡,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站即供,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏于微。R本人自食惡果不足惜逗嫡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望株依。 院中可真熱鬧驱证,春花似錦、人聲如沸恋腕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荠藤。三九已至伙单,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哈肖,已是汗流浹背吻育。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淤井,地道東北人布疼。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像币狠,于是被迫代替她去往敵國(guó)和親游两。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容