java數據類型和運算符

來自學習Java的筆記,有錯誤請大家指點。

1、JAVA語言支持的類型分爲2種,基本類型和引用類型,應用類型包括類,接口,數組類型,還有一種特殊的null類型,因爲String是類,所以字符串也屬於引用類型。基本數據類型包括數值型和布爾型,數值型包括整形,字符型,浮點型。

2、整型{byte(2字節),shot(2字節),int(4字節),long(8字節)};字符型{char(2字節)};浮點型{float(4字節),double(8字節)};布爾型{boolean}。

3、整型

     byte:內存中佔8位,表示範圍-2^7~2^8-1

     shot:...............16...................-2^15~2^16-1

     int:...................32..................-2^32~2^32-1

     long:................64..................-2^63~2^64-1

     通常給出一個整數默認是int型,如果直接將一個嬌小的書(在byte或shot範圍內)賦給byte或者shot變量,系統會自動把這個整數當成byte或shot處理;如果一個巨大的整數值(超出int範圍),java不會自動將這個整數當成long類型處理,如果希望當作long處理,應在這個整數值後面加L或者l。

4、字符型

     ASCII字符集:英文字符,數字,標點,編號。

     Unicode字符集:世界上所有書面語言的字符進行統一編號。

     java中' '," ",\ 都有特殊用途,如果一個字符串中包括了這些特殊字符,應使用轉義符的表示形式。如絕對路徑:“c:\codes",應寫成"c:\\codes",因爲Java會把第一個\當做轉義符,第二個\當做反斜槓

5、浮點型

    float:第一位是符號位,接下來8位是指數,接下來23位是尾數

    double:....................................11...........................52..............

    只有浮點型可以使用科學計數法。

    java默認的浮點型是double型,如果希望將一個浮點型值當做float型處理,應在該值後寫f或F,NaN表非數,和任何值都不等,包括自身。

6、自動類型轉換

   把一個表數範圍小的數值或變量直接賦給另一個表數範圍大的變量是,系統將進行自動類型轉換。

          char  

byte->shot->int->long->float->double

   當把任何基本類型的值和字符串進行連接運算,基本類型的值將自動類型轉換爲字符串類型。如果希望把基本類型值轉換爲對應字符串,可把基本類型值和空串連接。

String str2=3.5f+" ";     //將轉化爲字符串

System.out.println(3+4+"Hello"); //輸出7Hello

.............................("hello"+3+4); //輸出hello34

.............................("hello"+'a'+7);//輸出helloa7

..............................('a'+7+"hello");//輸出104hello

*“3+4+hello”先執行“3+4“,先執行2個整數之間的加法,在進行7+“hello”的運算,這時會把7當成字符處理,得到7hello;"hello+3+4"先執行“hello+3"得到hello3字符串,又進行“hello3+4”,4也被當作字符處理,得到hello34。

7、強制類型轉換

    double d=5.6;

    int i=(int)d;

   有時會造成溢出。

8、直接量:在程序中通過原代碼直接給出的值,如int i=5;5就是一個直接量。

     *字符串直接量注意:當程序第一次使用某個字符串直接量時,java會使用常量池緩存他,如果程序後面要用時,java會直接使用常量池中的字符串直接量。

     *常量池指的是在編譯期被確定,並被保存在已編譯的.class文件中的一些數據,它包括關於類,方法,接口中的常量,也包括字符串直接量。

String s0="hello";

String s1="hello";

String s2="he"+"llo";

System.out.println(s0==s1);//true;

        .............................(s0==s2);//true;

Java會確保每個字符串常量只有一個,不產生多個副本,s0和s1中“hello”都是字符串常量,它們在編譯時就被確定了,所以結果爲true;而“he”和“llo”也是字符串常量,連接起來也是字符串常量,s2同樣也是常量池中“hello”引用,所以結果也爲true。

9、1)除法運算符:如果兩個操作數都是整數型,則計算結果爲整數型,且除數不能爲0,否則引發除零異常。如果有一個操作數是浮點數,則計算結果也爲浮點數,此時允許除數是0或者0.0結果爲正無窮大或負無窮大。

2)求餘:如果兩個操作數都是整數,則求餘運算第二個操作數不爲0,如果有一個位浮點數,則允許第二個數爲0或者0.0,但結果爲非數:NaN0或者0.0對另一位任何數求餘都得到0或者0.0。

3)java沒有提供更復雜的運算符,如需要完成乘方,開方等運算,可藉助java.long.Math類的工具方法完成更復雜的數學運算。

double d=Math.pow(a,5);   //a^5

double c=Marh.sqrt(a);       //開方

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章