《瘋狂Java講義》學習筆記(三)數據類型和運算符

Java語言是一門強類型語言,所有變量必須先聲明後使用,指定類型的變量只能接受類型與之匹配的值
強類型語言可以在編譯過程發現源代碼的錯誤,保證程序健壯性

1、註釋

  • 單行註釋和多行註釋
  • 使用javadoc可以生成自己的API文檔
  • @author:指定Java程序的作者;@version:指定源文件的版本;@deprecated:不推薦使用的方法;@param:方法的參數說明信息;@return:方法的返回值說明信息;@see:“參見”,用於指定交叉參考的內容;@exception:拋出異常的類型;@throws:拋出的異常,和@exception同義

2、分隔號

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

3、標識符(用於給程序中的變量、類、方法命名的符號)規則

  • 標識符可以由字母、數字、下劃線和美元符號組成,但不能以數字開頭
  • 標識符不能是Java關鍵字和保留字,但可以包含關鍵字和保留字
  • 標識符不能包含空格
  • 標識符只能包含美元符和下劃線,不能包含@、#等其它特殊符號

4、Java關鍵字(50個)

abstractcontinuefornewswitch
assertdefaultifpackagesynchronized
boolean、dogotoprivatethis
breakdouble、implements、protectedthrow
byteelseimportpublic、throws
caseenum、instanceof、return、transient
catch、extends、intshorttry
charfinalinterfacestaticvoid
classfinallylong、strictfp、volatile
constfloat、native、superwhile

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個字符編碼
  • 轉義符:
\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,一般佔8位,主要用於控制流程或三目運算

11、類型轉換

  • 自動類型轉換:當把一個表數範圍小的數值或變量直接賦給另一個表數範圍大的變量時,系統可以進行自動類型轉換
byte b = 10;
int i = byte;
  • 強制類型轉換:當把一個表數範圍大的數值或變量直接賦給另一個表數範圍小的變量時,需要進行強制轉換
int i = 10;
byte b = (byte)i;
  • 強轉時如果超出表數範圍會造成溢出
int i = 233;
byte b = (byte)i;
// b將輸出-23

12、基本類型的包裝類

boolean->Boolean
byte->Byte
short->Short
int->Integer
long->Long
char->Character
float->Float
double->Double
  • 基本類型設置包裝類的原因:
    • 用於基礎類型之間的互相轉換,Integer.parseInt(“45”)
    • 當需要用到null的時候,包裝類默認值爲null
    • 需要以對象存在的時候,List

13、表達式類型的自動提升

  • 當一個算術表達式中包含多個基本類型的值時,數據類型將自動提升
  • byte、short、char類型將被自動提升至int
short s = 5;
s = s - 2;
// 將報錯,因爲表達式已經自動提升至int類型
int i = s - 2;
// 所以一般數據類型使用int
  • 整個算術表達式的數據類型自動提升到與表達式中最高等級操作數同樣的類型
  • 表達式的類型嚴格保持和表達式中最高等級操作數相同,即使兩個int類型證書進行除法運算,即使無法除盡,也將得到一個int類型結果。

14、直接量

  • 直接量是指在程序中通過源代碼直接給出的值,只支持三種類型:基本類型、字符串和null

15、運算符

  • 算術運算符,加、減、乘、除、求餘(%)、自加(++)、自減(–)
  • 賦值運算符,等於號(=)
  • 位運算符
&:按位與,當兩位同時爲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;不會報錯,機制不同
  • 比較運算符,大於(>),大於等於(>=),小於(<),小於等於(<=),等於(==),不等於(!=)
  • 邏輯運算符
&&:與,短路
&:與,非短路
||:或,短路
|:或,非短路
!:非
^:異或,當兩個數不同時才返回true,相同則返回false
短路:前面條件符合時將不再運行後面的條件

16、三目運算符

expression ? if-true-statement : if-false-statement;
5 > 3 ? "5大於3""5小於3";

17、運算符優先級(從上至下)

分隔符 . [] () {} , ;
單目運算符 ++ -- ~ !
強制類型轉換運算符 (type)
乘法/除法/求餘 * / %
加法/減法 + -
移位運算符 << >> <<<
關係運算符 < <= > >= instanceof
等價運算符 == !=
按位與 &
按位異或 ^
按位或 |
條件與 &&
條件或 ||
三目運算符 ?:
賦值 = += -+ *= /= &= |= ^= %= <<= >>= >>>=
發佈了73 篇原創文章 · 獲贊 11 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章