1. 程式人生 > >《瘋狂Java講義》學習筆記(三)資料型別和運算子

《瘋狂Java講義》學習筆記(三)資料型別和運算子

1、註釋

Java語言的註釋一共有三種類型

  • 單行註釋:用雙斜線 ”//” 表示
  • 多行註釋:用 /*------------------*/ 表示
  • 文件註釋:用 /**-----------------*/ 表示

如果編寫Java原始碼時添加了合適的文件註釋,然後通過JDK提供的javadoc工具可以直接將原始碼裡的文件註釋提取成一份系統的API文件。 
javadoc預設只處理public 或 protected修飾的內容。如果開發者希望javadoc工具可以提取private修飾的內容,則可以在使用javadoc工具時增加 -private 選項。
使用javadoc可以生成自己的API文件
@author:指定Java程式的作者;@version:指定原始檔的版本;@deprecated:不推薦使用的方法;@param:方法的引數說明資訊;@return:方法的返回值說明資訊;@see:“參見”,用於指定交叉參考的內容;@exception:丟擲異常的型別;@throws:丟擲的異常,和@exception同義

2、分隔號

分隔符(6個):Java語言裡的分隔符有分號; 、花括號{}、方括號[ ]、圓括號()、空格、圓點 .

  • 分號“;” :Java使用分號“;”進行語句分隔而非回車,一行可以有多個語句,一個語句也可以跨多行 。Java語句可以跨多行書寫,但一個字串(可用“+”號連線)、變數名不能跨越多行。
  • 花括號“{”“}” :用於定義程式碼塊
  • 方括號“[]” :用於訪問陣列元素,緊跟陣列變數名,如:a[3] = 3;
  • 圓括號“(”“)”
  • 空格“ ” :可以任意出現多個空格,但不要使用空格把一個變數名分割開。空格包含:空格符(Space)、製表符(Tab)和回車(Enter)等
  • 圓點“.” :通常用作類/物件和它的成員(成員變數、方法和內部類)之間的分隔符,表明呼叫某個類或某個例項的指定成員


3、識別符號(用於給程式中的變數、類、方法命名的符號)規則

 

  • 識別符號可以由字母(Unicode所能表示的多種語言的字元)、數字、下劃線和美元符號組成,但不能以數字開頭
  • 識別符號不能是Java關鍵字和保留字,但可以包含關鍵字和保留字
  • 識別符號不能包含空格
  • 識別符號只能包含美元符和下劃線兩個符號,不能包含@、#等其它特殊符號


4、Java關鍵字(50+3個)



5、資料型別分類


變數:相當於一個有名稱的容器,該容器用於裝各種不同型別的資料
兩種分類:基本型別(Primitive Type)和引用型別(Reference Type)
八大基本型別:byte、short、int、long、char、float、double、boolean
四種引用型別:類、介面、陣列和null


6、整型

 

  • byte:記憶體佔8位(2的8次方,相當於256),範圍是-128~127
  • short:記憶體佔16位,範圍是-32768~32767
  • int:記憶體佔32位,範圍是-2147483648~2147483647
  • long:記憶體佔64位,範圍是-2的63次方~2的63次方-1,必須使用L字尾,否則數值巨大時,系統不會當作long型別來處理

7、進位制

  • 二進位制的整數以0b或0B開頭
  • 八進位制的整數以0開頭
  • 十六進位制的整數以0x或0X開頭,其中10~15分別以a~f或A~F來表示

8、字元型char


Java使用16位的Unicode字符集作為編碼方式,支援世界上所有書面語言的字元,支援65536個字元編碼。

字元型值有三種表示形式:

  • 直接表示 ‘A’
  • 轉義 ‘\n’
  • 直接使用Unicode值來表示字元型值,格式是‘\uXXXX’,也可以不加‘’,格式是‘\uXXXX’

char型別在賦值時,可以選擇賦值數字型或字元型,但是字元型需要加上單引號括住才可以,而賦值的數字必須符合Unicode字符集的範圍即'\u0000'到'\uffff'。賦值為數字時會轉化為對應編號的字元再賦值。

轉義符:

\b:退格符
\n:換行符
\r:回車符
\t:製表符
\":雙引號
\':單引號
\\:反斜線


9、浮點型

  • float:單精度,佔4個位元組、32位,要跟F或f字尾
  • double:雙精度,佔8個位元組,64位,預設

兩種表示形式: 

  • 十進位制,如:5.12必須帶小數點; 
  • 科學計算,如:5.12e2=5.12X10的二次方

正無窮大(正浮點數除以0):POSITIVE_INFINITY,負無窮大(負浮點數除以0):NEGATIVE_INFINITY,非數(0.0除以0.0):NaN
所有正無窮大相等,所有負無窮大相等,所有NaN不與任何數值相當包括NaN本身都不想等
下劃線可以分割數值,整數值和浮點型數值都可以,如:double pi = 3.14_15_92_65_36;

10、布林型


boolean只能是true或false,主要用於控制流程或三目運算的判斷條件


11、型別轉換

  • 自動型別轉換:當把一個表數範圍小的數值或變數直接賦給另一個表數範圍大的變數時,系統可以進行自動型別轉換
byte b = 10;
int i = byte;
  • 強制型別轉換:當把一個表數範圍大的數值或變數直接賦給另一個表數範圍小的變數時,需要進行強制轉換

強制型別轉換的運算子是一對圓括號()

int i = 10;
byte b = (byte)i;

強轉時如果超出表數範圍會造成溢位

int i = 233;
byte b = (byte)i;
// b將輸出-23
  • 表示式型別的自動提升:如果運算中有多種型別的,表示式將結果自動提升為最大的型別。

short s = 5;
s = s - 2;
// 將報錯,因為表示式已經自動提升至int型別
int i = s - 2;
// 所以一般資料型別使用int

規則如下:

所有的byte、short、char型別將被提升到int型別
整個算術表示式的資料型別自動提升到與表示式中最高等級運算元同樣的型別。

12、基本型別的包裝類

boolean->Boolean
byte->Byte
short->Short
int->Integer
long->Long
char->Character
float->Float
double->Double


13、直接量


直接量是指在程式中通過原始碼直接給出的值,只支援三種類型:基本型別、字串和null


14、運算子

 

  • 算術運算子,加、減、乘、除、求餘(%)、自加(++)、自減(–)
  • 賦值運算子,等於號(=)
  • 比較運算子,大於(>),大於等於(>=),小於(<),小於等於(<=),等於(==),不等於(!=)
  • 邏輯運算子
&&:與,短路
&:與,非短路
||:或,短路
|:或,非短路
!:非
^:異或,當兩個數不同時才返回true,相同則返回false

短路邏輯:前面條件符合時將不再執行後面的條件

  • 位運算子
&:按位與,當兩位同時為1時才返回1
|:按位或,只要有一位為1時可返回1
~:按位非,單目運算子,將運算元的每個位全部取反
^:按位異或,當兩位相同時返回0,不同時返回1
<<:左移運算子
>>:右移運算子
>>>:無符號右移運算子

擴充套件後的賦值運算子

+=:x+=y相當於x=x+y
-=:x-=y相當於x=x-y
*=:x*=y相當於x=x*y
/=:x/=y相當於x=x/y
%=:x%=y相當於x=x%y
&=:x&=y相當於x=x&y
|=:x|=y相當於x=x|y
^=:x^=y相當於x=x^y
<<=:x<<=y相當於x=x<<y
>>=:x>>=y相當於x=x>>y
>>>=:x>>>=y相當於x=x>>>y
byte b = 5;
b = b + 5;報錯
b += 5;不會報錯,機制不同
  • 三目運算子
expression ? if-true-statement : if-false-statement;
5 > 3 ? "5大於3":"5小於3";


15、運算子優先順序(從上至下)

 

分隔符 . [] () {} , ;
單目運算子 ++ -- ~ !
強制型別轉換運算子 (type)
乘法/除法/求餘 * / %
加法/減法 + -
移位運算子 << >> <<<
關係運算符 < <= > >= instanceof
等價運算子 == !=
按位與 &
按位異或 ^
按位或 |
條件與 &&
條件或 ||
三目運算子 ?:
賦值 = += -+ *= /= &= |= ^= %= <<= >>= >>>=