3、java中的数据类型和运算符
?
數據類型
數據類型是對數據存儲在內存中位置的一種抽象表示,java的數據類型總體上分為兩大類:基本數據類型和引用數據類型。
1、基本數據類型
? ? ? ?基本數據類型是語言本身定義的,數據結構上有說基本數據類型表示的是真實的數字和字符,在java中,基本數據類型的數據都是存儲在棧內存中,基本數據類型包含四類八種,介紹如下。
? ? ? ?第一類:整型,包含四種數據類型,字節型(byte)、短整型(short)、整型(int)和長整型(long)。byte類型的數據在內存中占1個字節(8位),取值范圍換成十進制是-2^7到2^7-1,默認值為0;short類型的數據在內存中占2個字節(16位),取值范圍是-2^15到-2^15,默認值是0;int類型的數據在內存中占4個字節(32位),取值范圍是-2^31到2^31,默認值是0;long類型的數據在內存中占8個字節(64位),取值范圍是-2^63~2^63-1,默認值是0L。
? ? ? ?第二類:浮點型,包含兩種數據類型,單精度浮點數(float)和雙精度浮點數(double),float類型的數據在內存中占4個字節(32位),取值范圍是1.4E-45~3.4028235E38 (程序打印的),默認值是0.0;double類型的數據在內存中占8個字節(64位),取值范圍是4.9E-324~1.7976931348623157E308,默認值是0.0。兩者區別在于double表示的小數更加精確,一般表示浮點數時都是用double,如果聲明float型則數值需加F,例如:float f = 20L;
? ? ? ?第三類:字符型,用于存儲字符類型數據,占2個字節(16位),取值范圍時0到65535,默認值為空。說起字符就要說一下Unicode字符集,0到65535每一個數再Unicode字符集中都對應一個特定的字符,聲明的字符型數據需要用單引號引起來,例如:char ch = ‘A’;還有一種就是轉義類字符,以”\”開頭。
? ? ? ?第四類:布爾型,用于存儲布爾類型數據,占用1個字節(8位),只有兩個數值true和false,默認值是false。
? ? ? ?補充:數據在內存中是以二進制形式表示的,以byte類型為例,在內存中占8位,由于整型數據有正負之分,所以八位中的最高為用來表示符號位,0為正,1為負。正數在內存中以被保存數據的二進制原碼進行存儲,而負數是以其對應正數補碼形式存在,也就是正數的原碼取反后加1。也正是因為存儲的數據因為類型不同占用的存儲單元也不同,所以就會存在一個問題,當使用占存儲單元少的數據類型去強制存儲占用存儲單元多的數據類型的數據時就會發生精度缺失的錯誤,這就是強制類型轉換會使得數據丟失精度的本質。所以在使用時應注意避免不要造成精度確實。
2、引用數據類型
? ? ? ?引用數據類型可以是String 、數值 、java中的或用戶自定義的各種類,引用數據類型的數據在內存中的存儲和基本數據類型不同,在棧中存儲的僅是變量和存儲具體數據的地址,而具體的數據是存儲在堆上的,這也是之所以叫做引用類型的原因,棧中存儲的僅是引用的存儲在堆中的具體數據一個地址而已。(String有點特別)
? ? ? ?對于引用數據類型沒什么介紹的,這東西需要長期積累。
? ? ? ?這里著重說一下,java中引用數據類型是遵循引用傳遞的(string類型有點特別),這里的引用傳遞指的是可以將引用類型數據的值進行修改,而不是真的去修改地址,java是無法直接去修改地址的。
運算符
1、算術運算符
????????顧名思義,就是加(+)、減(-)、乘(*)、除(/)、取余(%)等,其中還有兩個特殊的自加和自減操作,簡單說一下,自加運算符,例如:i++,就表示i本身加上1,然后將值重新賦值給i,就相當于i = i + 1; ,自減與自加相同只是減1而已。
2、賦值運算符
? ? ? ? 就是將值賦給聲明的變量,例如:i = 1; 說白了就是將右邊的值賦給左邊
3、關系運算符
? ? ? ? 就是用來比較兩個數據之間關系的符號,對于基本數據類型而言,比較的就是大小,而對于引用的數據類型比較的就是兩個數據是否存儲在同一地址下(只有”!=”和”==”才使用于引用個類型)。符號標識有:> 、<、>=、<=、!=、== 。
? ? ? ? 這里說一下”=”和”==”,前一個是賦值運算符,而后一個是比較運算符,例如比較1和2是否相等,使用”==”。
4、邏輯運算符
? ? ? Java中的邏輯運算符包括與(&&)、或(||)、非(!)、異或(^),簡單介紹以下
? ? ? 與:A&&B,就是當A并且B 同時滿足,才表示條件成立
? ? ? 或:A||B,表示當A或者B有一個滿足時,條件就成立
? ? ? 非:!A,表示當不滿足條件A時,整體的條件就成立
? ? ? 異或:A^B,當A或B只要有一個為true,整個條件就成立
5、位運算符
???????用來操作二進制的運算符,包括:按位與(&)、按位或(|)、右移(>>)、左移(<<)、無符號右移(>>),還有其他的位運算,想了解的非常清楚話建議學習以下編譯原理,這里只是簡單的介紹以下常用的用法。
? ? ? ?先說一下按位與和邏輯與的區別,兩者都是表示與,只有兩個條件都成立才可以,但是邏輯與又被稱為短路與,意思就是當A&&B中如果A不滿足條件則不會再去判斷B是否滿足條件,而按位與則會去繼續判斷。按位或同于按位與
? ? ? ?說一下左移,這里不進行具體的位運算演示,只說一下值的變化, a<<b ,a左移b位,相當于a = a * 2 ^ b,就是將a乘以2的b次方的值賦給a。右移相當于除以2的b次方。不過這些操作都需要在合理的數值范圍內進行,不然會產生錯誤.
6、三目運算符
? ? ? ?這個也是開發中經常使用的,具體格式如下:
? ? ? ?String a = 條件是否成立 ? ?“1” : “2”;
? ? ? ?如上給a賦值,當條件成立時,則將1賦給a,否則將2賦給a,也就是條件如果成立則取分號前邊的值,否則分號后邊.
?
總結
以上是生活随笔為你收集整理的3、java中的数据类型和运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网名两字高冷 霸气高冷两字网名
- 下一篇: 大溪地在哪里 大溪地的位置