贈¥299 聲闊藍芽耳機,《每天聽見吳曉波》會員年卡 180 元
class 類名 { 類體;
}
如:class Person { }
注意: 通常情況下,當類名由多個單片語成時,要求每個單詞首字母都要大寫。
成員變數的定義class 類名 {
資料型別 成員變數名 = 初始值;
}
如:class Person {
String name;
}
注意:當成員變數由多個單片語成時,通常要求從第二個單詞起每個單詞的首 字母大寫 。
物件的建立new 類名();
如:new Person();
注意:a.當一個類定義完畢後,可以使用new關鍵字來建立該類的物件,這個 過程叫做類的例項化。
b.建立物件的本質就是在記憶體空間的堆區申請一塊儲存區域, 用於存放 該物件獨有特徵資訊。
引用的定義基本概念 :a.使用引用資料型別定義的變數叫做引用型變數,簡稱為"引用"。 b.引用變數主要用於記錄物件在堆區中的記憶體地址資訊,便於下次訪問。
語法格式 :
類名 引用變數名;
引用變數名.成員變數名;
如:Person p = new Person();
p.name = "張飛"; System.out.println(p.name); 成員變數的初始值物件建立後,其成員變數可以按照預設的方式初始化,具體規則如下:
/*
程式設計實現Person類的定義
*/
public class Person {
// 資料型別 成員變數名 = 初始值; - 其中=初始值 通常都省略不寫
String name; // 用於描述姓名的成員變數
int age; // 用於描述年齡的成員變數
// 自定義成員方法實現所有成員變數的列印
// 返回值型別 方法名稱(形參列表) { 方法體; }
void show() {
// 成員變數和成員方法都屬於類內部的成員,因此可以直接訪問成員變數不需要再加引用.的字首
System.out.println("我是" + name + ",今年" + age + "歲了!");
}
// 自定義成員方法實現將姓名修改為引數指定數值的行為
// String s = "guanyu";
void setName(String s) {
name = s;
}
// 自定義成員方法實現將年齡修改為引數指定數值的行為
// int i = 35;
void setAge(int i) {
age = i;
}
// 自定義成員方法實現將姓名和年齡修改為引數指定數值的行為 下面的方法不推薦使用
// String s = "liubei";
// int i = 40;
void setNameAge(String s, int i) {
name = s;
age = i;
}
// 自定義成員方法實現可變長引數的使用 看作一維陣列使用即可 0 ~ n個
void showArgument(int num, String... args) {
System.out.println("num = " + num);
for(int i = 0; i < args.length; i++) {
System.out.println("第" + (i+1) + "個引數為:" + args[i]);
}
}
// 自定義成員方法實現姓名數值的獲取並返回的行為
String getName() {
return name; // 返回資料並結束當前方法
// ... 執行不到的
}
// 自定義成員方法實現年齡數值的獲取並返回的行為
int getAge() {
return age;
}
public static void main(String[] args) {
// 1.宣告Person型別的引用指向Person型別的物件
// 資料型別(類名) 引用變數名 = new 類名();
Person p = new Person();
// 2.列印物件中的成員變數值
// 引用變數名.成員變數名
//System.out.println("我是" + p.name + ",今年" + p.age + "歲了!"); // null 0
// 引用變數名.成員方法名(實參列表);
// 呼叫方法的本質就是根據方法名跳轉過去執行方法體後再跳轉回這個位置
p.show();
System.out.println("-----------------------------------------------------");
// 3.修改成員變數的數值
p.name = "zhangfei";
p.age = 30;
// 4.再次列印修改後的數值
//System.out.println("我是" + p.name + ",今年" + p.age + "歲了!"); // zhangfei 30
p.show();
System.out.println("-----------------------------------------------------");
// 5.通過成員方法的呼叫實現成員變數的修改
p.setName("guanyu");
p.setAge(35);
p.show(); // guanyu 35
System.out.println("-----------------------------------------------------");
// 6.通過成員方法同時修改姓名和年齡
//p.setNameAge("liubei", 40);
int ia = 40;
p.setNameAge("liu"+"bei", ia);
p.show(); // liubei 40
System.out.println("-----------------------------------------------------");
// 7.通過成員方法實現可變長引數的列印
p.showArgument(0);
System.out.println("-----------------------------------------------------");
p.showArgument(1, "引數1");
System.out.println("-----------------------------------------------------");
p.showArgument(2, "引數1", "引數2");
System.out.println("-----------------------------------------------------");
// 8.通過成員方法的呼叫實現成員變數數值的獲取並列印
String str1 = p.getName();
System.out.println("獲取到的姓名是:" + str1); // liubei
int ib = p.getAge();
System.out.println("獲取到的年齡是:" + ib); // 40
}
}
class 類名 {
返回值型別 成員方法名(形參列表) {
成員方法體; }
}
如:
class Person {
void show() {
System.out.println("沒事秀一下!"); }
}
建議:當成員方法名由多個單片語成時,要求從第二個單詞起每個單詞的首字母大寫
返回值型別的詳解-
返回值主要指從方法體內返回到方法體外的資料內容。
-
返回值型別主要指返回值的資料型別,可以是基本資料型別,也可以是
引用資料型別。
-
當返回的資料內容是66時,則返回值型別寫 int 即可
-
在方法體中使用return關鍵字可以返回具體的資料內容並結束當前方法。
-
當返回的資料內容是66時,則方法體中寫 return 66; 即可
-
當該方法不需要返回任何資料內容時,則返回值型別寫void即可。
• 形式引數主要用於將方法體外的資料內容帶入到方法體內部。
• 形式引數列表主要指多個形式引數組成的列表,語法格式如下:
資料型別 形參變數名1, 資料型別 形參變數名2, ...
• 當帶入的資料內容是"hello"時,則形參列表寫 String s 即可
• 當帶入的資料內容是66和"hello"時,則形參列表寫 int i, String s 即可
• 若該方法不需要帶入任何資料內容時,則形參列表位置啥也不寫即可
• 成員方法體主要用於編寫描述該方法功能的語句塊。
• 成員方法可以實現程式碼的重用,簡化程式碼。
方法的呼叫• 引用變數名.成員方法名(實參列表); 如p.show();
• 實際引數列表主要用於對形式引數列表進行初始化操作,因此引數的個
數、型別以及順序都要完全一致。
• 實際引數可以傳遞直接量、變數、表示式、方法的呼叫等。
• 返回值型別 方法名(引數的型別... 引數名)
• 方法引數部分指定型別的引數個數是可以改變的,也就是0~n個 。
• 一個方法的形參列表中最多隻能宣告一個可變長形參,並且需要放到參 數列表的末尾
引數傳遞的注意事項-
基本資料型別的變數作為方法的引數傳遞時,形參變數數值的改變通常 不會影響到實參變數的數值,因為兩個變數有各自獨立的記憶體空間;
-
引用資料型別的變數作為方法的引數傳遞時,形參變數指向內容的改變 會影響到實參變數指向內容的數值,因為兩個變數指向同一塊記憶體空間
-
當引用資料型別的變數作為方法的引數傳遞時,若形參變數改變指向後 再改變指定的內容,則通常不會影響到實參變數指向內容的改變,因為 兩個變數指向不同的記憶體空間。