今天我要介紹的是在Java中對變量和類型的一些相關知識點的介紹,包括對基本數據類型,引用類型,變量命名規則和類型轉換以及其注意事項的解明。
java變量與類型:Java 是靜態類型語言,變量必須先聲明類型后使用。變量是存儲數據值的容器,而類型決定了變量能存儲的數據種類、內存大小及可執行的操作。
基本數據類型:(見下表表格所示)
基本數據類型八種數據類型的表格展示說明:
1. 整型(整數)
類型 | 位數 | 取值范圍 | 示例 |
---|---|---|---|
byte | 8 | -128 ~ 127 | byte b = 100; |
short | 16 | -32768 ~ 32767 | short s = 500; |
int | 32 | -231 ~ 231-1 | int age = 25; |
long | 64 | -2?3 ~ 2?3-1 | long big = 100L; |
2.浮點型(小數)
類型 | 位數 | 精度 | 示例 |
---|---|---|---|
float | 32 | 約 6-7 位小數 | float pi = 3.14f; |
double | 64 | 約 15 位小數 | double price = 19.99; |
3.字符型(單個字符)
類型 | 位數 | 說明 | 示例 |
---|---|---|---|
char | 16 | Unicode 字符 | char c = 'A';? |
4.布爾型(邏輯值)
類型 | 位數 | 取值 | 示例 |
---|---|---|---|
boolean | 1 | true/false | boolean flag = true; |
引用類型
引用類型變量存儲的是對象的內存地址(引用),而非直接的值。常見類型:
String(字符串):
String name = "Alice"; // 雙引號包裹
String message = "Hello, " + name; // 拼接字符串
數組:
int[] numbers = {1, 2, 3}; ? ? ? // 一維數組
String[][] names = {{"Tom", "Jerry"}, {"Alice"}}; // 二維數組
注:二維數組介紹:
二維數組是由多個一維數組組成的數組,每個一維數組都可以有不同的長度。在這個例子中,names是一個二維數組,它包含兩個一維數組。第一個一維數組包含兩個元素 "Tom" 和 "Jerry",第二個一維數組只包含一個元素 "Alice"。可以把二維數組看作是一個表格或者是一個矩陣,其中每個元素都可以通過兩個索引來訪問,第一個索引表示行,第二個索引表示列。
類對象:
// 自定義類:
class Person {
? ? String name;
? ? int age;
}
Person p = new Person(); // 創建對象
p.name = "Bob"; ? ? ? ? ?// 訪問成員變量
介紹:類對象是面向對象編程中的一個重要概念,它是指在程序中定義的一種數據結構,用來表示一類具有相似屬性和行為的對象。類對象包含了數據成員和方法成員,數據成員用來描述對象的狀態,而方法成員則定義了對象的行為。
變量命名規則
-
合法字符:字母、數字、
_
、$
,但不可以數字開頭。 -
區分大小寫:
age
?和?Age
?是不同的變量。 -
駝峰命名法:如?
studentName
。 - 1:駝峰命名法:CamelCase(駝峰命名法)是一種變量命名規則,其特點是在命名時使用連續的單詞,并且每個單詞的首字母大寫,除了第一個單詞之外。這種命名規則使得變量名更易閱讀和理解,通常用于編程語言中的變量、函數名或類名的命名。例如,"myVariableName"就是一個使用了駝峰命名法的變量名。
-
禁止關鍵字:如?
int
,?class
?不可作為變量名。
正示例:
int count = 10;
String user_name = "Lucy";
double $price = 29.99;
倒示例:
int 2num = 5; // 以數字開頭
float class = 3.14f; // 使用關鍵字
類型轉換
1. 自動類型轉換(隱匿)
小范圍類型 → 大范圍類型時自動轉換:
int a = 100;
long b = a; // 自動轉為 long
double c = b; // 自動轉為 double
2.強制類型轉換(凸顯)
大范圍類型 → 小范圍類型時需強制轉換,可能丟失精度:
long x = 1000L;
int y = (int) x; // 強制轉換
double d = 3.14;
int i = (int) d; // i = 3(小數部分丟失)
注意事項
變量初始化:局部變量得顯式初始化,不然編譯結果會顯示報錯。
int x; // 錯誤!未初始化
int y = 0; // 正確
?注:默認值==》成員變量有默認值(如?int
?默認為 0,引用類型默認為?null
)。
字符串拼接:+
?可將其他類型自動轉為字符串=》
String info = "價格:" + 19.99; // "價格:19.99"
代碼示例:
1.基本類型 vs 包裝類
? 基本類型高效,但無法用于泛型;包裝類(?比如:Integer
)提供對象操作:
int primitive = 42;
Integer wrapper = Integer.valueOf(42); // 裝箱
int unboxed = wrapper.intValue(); // 拆箱
2.字符串與類型轉換
? 引用類型的常見操作:?
String s = "123";
int num = Integer.parseInt(s); // 字符串轉int
?優勢與劣勢:
①:優勢
-
類型安全:靜態類型在編譯時檢查錯誤,減少運行時問題。
-
性能優化:基本類型直接存儲在棧內存,訪問速度快。
-
清晰的代碼結構:類型聲明增強代碼可讀性。
-
面向對象支持:引用類型支持多態、繼承等特性。
②:劣勢
-
冗長的類型聲明:需顯式聲明類型,代碼不夠簡潔(對比動態類型語言)。
-
基本類型與包裝類的復雜性:需處理自動裝箱/拆箱(可能引發?
NullPointerException
)。 -
類型轉換風險:強制轉換可能導致數據丟失或運行時錯誤。
總結:Java 的類型系統通過嚴格的靜態類型檢查保障了代碼的健壯性,但犧牲了一定的靈活性。開發者需在類型選擇、轉換和內存管理中權衡性能與安全性。掌握變量與類型是 Java 編程的基礎,合理選擇類型能提升代碼效率和可讀性。