java之資料型別+運算子
資料型別
-
布爾型別變數 👽
- boolean
- 僅有true和false
- 與c語言中的0為假,1為真不可等同
- 型別大小不定,有的JVM中時一個位元組,有些事1bit
-
字串型別變數🍼
- C語言中無字串型別,java中有
- 用“ ”括起來的一串字符為字串字面值
- 為參考資料型別
- 有些字串中的字符需用到轉義字符,如打一個‘\’,那可能需要:"\ \ "
基本資料型別 byte、short、int、long、float、double、char、boolean 參考資料型別 String、陣列、介面、列舉,,, - 字串拼接
public class helloworld{
public static void main(String[] args){
System.out.println("nihao"+10);//會拼接為nihao10,這么個字串
System.out.println(10+20+"nihao");//由于順序計算,所以最終是:30nihao
System.out.println(10+""+20+"hello");//1020hello
}
}
-
轉義字符🎻(常用的就這幾個)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fMzNSQSq-1635823080418)(C:\Users\LebronHarden\AppData\Roaming\Typora\typora-user-images\image-20211102095518215.png)]
-
變數的作用域🦄
-
一個變數能夠生效的范圍,一般是變數定義所在代碼塊
-
只有8種基本資料型別才有對應的包裝類
-
java中的變數:(java中沒有C中的全域變數)
成員變數 普通成員變數、靜態成員變數 區域變數 同C
-
-
變數的命名規則🔑
- 硬性指標
- 一個變數名只能包含數字、字母、下劃線(及$,但不要用)
- 數字不可作開頭
- 變數名大小寫銘感
- 軟性指標
- 變數名最好可以顧名思義
- 變數名最好別用拼音
- 變數名的詞性最好是名詞
- 小駝峰(類名用大駝峰)
- 硬性指標
-
常量(運行中不可被修改的量,只能被初始化一次)🐰
- 字面值常量
- final關鍵字修飾的常量(類似C中的const)
變數在程式運行時,才知道是幾
常量在編譯時,已經確定是幾
-
理解型別轉換💛
-
public class helloworld{ public static void main(String[] args){ int a=10; long b=20; a=b;//報錯 b=a;//成功編譯 } }-
不同資料型別變數之間的賦值,表示范圍更小的型別可隱式型別轉換為范圍較大的型別
反之,則不行,
-
-
int和boolean之間的相互賦值
public class helloworld{ public static void main(String[] args){ int a=10; boolean b=true; a=b;//報錯 b=a;//報錯 } }- int和boolean型別互不相干,不可相互賦值
-
int字面常量給byte賦值
public class helloworld{ public static void main(String[] args){ byte a=100;//通過 byte b=200;//不通過 } }- java中使用字面常量賦值時,java會自動進行書庫范圍校驗,判斷是否合理,這里的byte可表示范圍是:-128~127
-
使用強制型別轉換
- double型別的資料,強制型別轉換后,小數部分丟失
- 強制型別轉換不一定成功,互不相干的型別無法強轉,
-
對上述的總結??
- 不同數字型別變數之間的賦值,小范圍的變數可做隱式型別轉換后賦給大范圍變數,反之不可
- 要對1中的操作(大范圍資料賦給小范圍資料)硬搞,只可做強轉,但此時可能會有精度丟失
- 用字面常量做賦值不可超出被賦值變數的可表范圍
-
理解數值提升💛
-
int 和long混合運算
public class helloworld{ public static void main(String[] args){ int a=10; long b=20; int c=a+b;//出錯,a+b結果為long,不可賦值給int的c long d=a+b;//通過 } } -
byte和byte的運算
public class helloworld{ public static void main(String[] args){ byte a=10; byte b=20; byte c=a+b;//出錯,a+b的結果是int型別,不可賦值給byte型別的c } }
-
對上述的總結🦅
-
小于4byte的運算式運算,即使同型別,也都會提升為4byte,在計算
-
大于4byte的運算式混合型別運算,小的會轉成大的再運算,其結果也是大范圍的型別
-
int和string之間的相互轉化
public class helloworld{ public static void main(String[] args){ int num=10; String str2=num+"";//這里是上面有講到的字串拼接的知識,此時的10相當于字串了 String str1=String.valueOf(num);//String為包裝類,這個包裝類中有很多的方法(函式),這里的.就是呼叫,呼叫了valueOf(int num)這個函式,含義是:把int屬性的num改成String屬性,形式上沒啥變化,但10已經不再是int,而是String. } }public class heloworld{ public static void main(String[] args){ String str="123"; int ret=Integer.valueOf(str); System.out.println(ret+1);//輸出124,道理和前述代碼一致 } }
包裝類小總結🌵
- 在java中每個基本資料型別都有自己對應的包裝類(里面包含了豐富的函式(方法))
- 除了int和char兩個基本資料型別的包裝類的類名分別是:Integer和Character,其他基本資料型別對應的類名都是首字母大寫,如long的包裝類的類名就是Long
運算子
- 算術運算子
- +—*/%
- 對/:
- 分母不能為0
- int/int可能會精度丟失
- java中每個陳述句自帶assert,也就是說陳述句報錯后,不再往下繼續執行!
- 對%:
- 不同于C中只能運算元為整數的限制,java中int和double都可以使用
- 增量賦值運算子
- 同C中的復合賦值運算子
- 自增自減運算子(同C)
- 關系運算子
- > >= < <= == !==
- 關系運算子的運算式回傳值都是boolean型別
- > >= < <= == !==
- 邏輯運算子
- && || !(同C)
- 注意邏輯運算子有短路現象!!!
- !的操作物件需為布爾運算式
- 位運算子
- & | ^
- 十進制轉其他進制(如8/16),先寫出二進制補碼,對8進制3個3個一組,16進制,4個4個一組去讀那個補碼的資料,就是你轉換而來的東西,
- 移位運算子
- 左移、算術右移、邏輯右移(無符號右移)
- 左移1位相當于×2,移N位就是×2^N
- 右移1位相當于/2,移N位就是/2^N
- 計算機的移位效率高于計算乘除,所以當某個代碼正好乘除2^N時,可用移位運算子代替
- 移動負數位和移位的數字過大度沒有意義
- 條件運算子
- 表一?表二:表三(同C的三目運算子)
- 表1位布爾運算式
- java中的唯一一個三目運算子
- 運算子的優先級
- 用括號去控制,所以不用去刻意的記優先級
?
?
?
?
?
?
?
?
效率高于計算乘除,所以當某個代碼正好乘除2^N時,可用移位運算子代替
- 移動負數位和移位的數字過大度沒有意義
- 條件運算子
- 表一?表二:表三(同C的三目運算子)
- 表1位布爾運算式
- java中的唯一一個三目運算子
- 運算子的優先級
- 用括號去控制,所以不用去刻意的記優先級
?
?
?
?
?
?
?
?
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/345723.html
標籤:java
