一仰禀、數據類型
1. 基本類型: 四類八種
整型: byte 书幕、short 象迎、int 香伴、long
浮點型:float 祖驱、 double
布爾型: boolean
字符型: char
2. 引用類型: String、集合類型(如 List, Set, Map 等)瞒窒、自定義類型(類捺僻、方法、對象...)
二、數據類型轉換(拆箱和封箱): 自動轉換 匕坯、強制轉換
1. 自動類型轉換(隱式轉換)
當將一個較小范圍的數據類型賦值給較大范圍的數據類型時束昵,Java 會自動進行類型轉換。例如:
// byte → short → int → long → float → double
// char → int → long → float → double
int a = 10;
double b = a; // 自動將 int 轉換為 double
2. 強制類型轉換(顯式轉換)
當需要將一個較大范圍的數據類型賦值給較小范圍的數據類型時葛峻,必須使用強制類型轉換锹雏。需要注意的是,這種轉換可能會導致精度丟失或數據溢出术奖。
double d = 10.5;
int i = (int) d; // 強制將 double 轉換為 int礁遵,結果為 10
3. 裝箱和拆箱
裝箱: 將基本數據類型轉換為對應的包裝類。
拆箱: 將包裝類轉換為對應的基本數據類型采记。
Integer boxedInt = Integer.valueOf(10); // 手動裝箱
int unboxedInt = boxedInt.intValue(); // 手動拆箱
// 或者使用自動裝箱和拆箱
Integer autoBoxedInt = 10; // 自動裝箱
int autoUnboxedInt = autoBoxedInt; // 自動拆箱
4. 字符串轉基本類型
使用包裝類的 parseXXX 方法:
Integer.parseInt(String s)
Double.parseDouble(String s)
Boolean.parseBoolean(String s)
基本類型轉字符串
使用 String.valueOf() 方法:
String.valueOf(int i)
String.valueOf(double d)
String.valueOf(boolean b)
使用 + 操作符:
int num = 10; String str = "" + num;
String strNum = "123";
int num = Integer.parseInt(strNum); // 字符串轉整數
int num2 = 123;
String strNum2 = String.valueOf(num2); // 整數轉字符串
5.對象之間的轉換
向上轉型(Upcasting)
將子類對象賦值給父類引用佣耐,這是隱式的,不需要強制轉換唧龄。
向下轉型(Downcasting)
將父類對象賦值給子類引用兼砖,需要強制轉換,并且要確保該對象實際上是子類的實例既棺,否則會導致 ClassCastException異常讽挟。
class Animal {}
class Dog extends Animal {}
Animal animal = new Dog(); // 向上轉型
Dog dog = (Dog) animal; // 向下轉型
6. 字符與數字的轉換
字符轉數字
使用 Character.getNumericValue(char ch) 方法。
數字轉字符
使用 (char) ('0' + num) 或 Character.forDigit(int digit, int radix)
char ch = '5';
int num = Character.getNumericValue(ch); // 字符轉數字
int num2 = 5;
char ch2 = (char) ('0' + num2); // 數字轉字符
二丸冕、 關鍵字
1)訪問修飾符
-
public
作用: 允許任何其他類訪問耽梅。
可見性: 同一包內、不同包內的子類胖烛、不同包中的非子類都可以訪問褐墅。
適用對象: 類、方法洪己、構造方法妥凳、變量逝钥。 -
protected
作用: 允許同一包中的類和不同包中的子類訪問艘款。
可見性: 同一包內、不同包內的子類可以訪問姥份;不同包中的非子類不能訪問。
適用對象: 方法埃难、構造方法涡尘、變量(不適用于類)。 -
默認(無修飾符)
作用: 只允許同一包中的類訪問座泳。
可見性: 同一包內可以訪問镇防;不同包中的類(包括子類)不能訪問来氧。
適用對象: 類中狂、方法、構造方法勋又、變量 -
private
作用: 只允許本類內部訪問惯驼。私有成員變量可通過 setter 和getter 方法后 供外部使用
可見性: 僅限于定義該成員的類內部端铛,外部類(包括子類)不能訪問您朽。
適用對象: 方法、構造方法、變量(不適用于類)涮母。
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
2)非訪問修飾符
final
作用: 禁止繼承(類)彤钟、禁止重寫(方法)或禁止修改(變量)。
適用對象:
類:防止該類被繼承转质。
方法:防止子類重寫該方法狮暑。
變量:定義常量拣展,值一旦賦值后不能更改abstract
作用: 定義抽象類或抽象方法按脚。
適用對象:
類:表示該類是抽象類,不能實例化介蛉,必須被繼承溶褪。
方法:表示該方法沒有實現币旧,必須在子類中實現。static
作用: 表示成員屬于類本身而不是類的實例猿妈。
適用對象:
變量:靜態(tài)變量(類變量)吹菱,所有實例共享同一個值。
方法:靜態(tài)方法彭则,可以通過類名直接調用鳍刷。synchronized
作用: 用于線程同步,確保同一時間只有一個線程可以執(zhí)行該方法或代碼塊贰剥。
適用對象:
方法:同步方法倾剿。
代碼塊:同步代碼塊筷频。
class SynchronizedExample {
synchronized void syncMethod() {
// 同步方法體
}
void someMethod() {
synchronized (this) {
// 同步代碼塊
}
}
}
-
volatile
作用: 保證多線程環(huán)境下的可見性蚌成,即一個線程對變量的修改會立即對其他線程可見。
適用對象:
變量:確保變量的每次讀取都是最新的值凛捏。 -
transient
作用: 指定該變量不參與序列化過程担忧。
適用對象:
變量:當對象被序列化時,transient 變量不會被保存坯癣。 -
strictfp
作用: 確保浮點運算在不同平臺上具有嚴格一致的結果瓶盛。
適用對象:
類:應用于整個類。
方法:應用于單個方法示罗。
strictfp class StrictFpExample {
strictfp void strictFpMethod() {
double result = 1.0 / 3.0;
}
}
3) 類和接口關鍵字
extends惩猫、implements 和 interface 是 Java 中的關鍵字,它們用于定義類和接口之間的繼承和實現關系蚜点。這些關鍵字不屬于訪問修飾符或非訪問修飾符的范疇轧房,而是屬于類和接口定義中的關鍵字
-
extends
作用: 指定一個類繼承自另一個類。
適用對象: 類 -
implements
作用: 指定一個類實現一個或多個接口绍绘。
適用對象: 類 -
interface 實現接口的類必須重寫接口內所有方法,但是可以通過定義一個抽象類去重寫接口,然后OneServlet 繼承抽象類,將需要重寫的方法也定義成 抽象方法,這樣就可以只重寫某個具體的抽象方法**
作用: 定義一個接口奶镶。
適用對象: 接口
- private 私有的 用于修飾成員變量,增加安全性,
- interface 修飾符 修飾的類 成為接口,接口內所有方法不可以在本類中實現,也就是沒有方法體
// fun1 和 fun2 在interface 修飾的MyInerface接口內 不可以有 { }
public interface MyInerface(){
public void fun1();
public void fun2();
}
- public 訪問修飾符迟赃,表示該類、方法或變量可以被任何其他類訪問
- class 關鍵字厂镇,用于定義一個類纤壁。類是對象的模板,包含了屬性(變量)和行為(方法)
- void 方法的返回類型,定義為 void 的方法表示不返回任何值