Java程序的方法設(shè)計(java程序設(shè)計的步驟)
寫在前面:博主是一只經(jīng)過實戰(zhàn)開發(fā)歷練后投身培訓(xùn)事業(yè)的“小山豬”,昵稱取自動畫片《獅子王》中的“彭彭”,總是以樂觀、積極的心態(tài)對待周邊的事物。本人的技術(shù)路線從Java全棧工程師一路奔向大數(shù)據(jù)開發(fā)、數(shù)據(jù)挖掘領(lǐng)域,如今終有小成,愿將昔日所獲與大家交流一二,希望對學(xué)習(xí)路上的你有所助益。同時,博主也想通過此次嘗試打造一個完善的技術(shù)圖書館,任何與文章技術(shù)點有關(guān)的異常、錯誤、注意事項均會在末尾列出,歡迎大家通過各種方式提供素材。
對于文章中出現(xiàn)的任何錯誤請大家批評指出,一定及時修改。
有任何想要討論和學(xué)習(xí)的問題可聯(lián)系我:zhuyc@vip.163.com。
發(fā)布文章的風(fēng)格因?qū)诙悾猿审w系,不足之處請大家指正。
Java程序的方法設(shè)計
本文關(guān)鍵字:Java、方法定義、方法設(shè)計、方法調(diào)用、方法重載
文章目錄
Java程序的方法設(shè)計
一、方法的定義
1. 概念與作用
2. 定義的格式
3. 方法的簽名
4. 方法的注釋
二、方法的設(shè)計
1. 方法設(shè)計的思路
2. 方法名稱的確定
3. 參數(shù)列表的確定
4. 返回類型的確定
5. 方法內(nèi)容的確定
三、方法的調(diào)用
1. 方法調(diào)用的格式
2. 方法的執(zhí)行過程
3. 調(diào)用的注意事項
四、方法的重載
1. 重載的概念
2. 重載方法的調(diào)用
一、方法的定義
我們在學(xué)習(xí)Java編程以后接觸到的第一個程序就是"Hello World”,在這當(dāng)中涉及到兩個主要的結(jié)構(gòu):類和main方法,當(dāng)時我們只是說明了main方法是程序的入口,那么當(dāng)我們想要自己定義一個方法時應(yīng)該如何下手呢?
1. 概念與作用
首先我們要明確方法的概念和作用,從名稱上來說,方法也可以被稱為函數(shù),是用來解決同一類的問題的。從代碼的結(jié)構(gòu)上來說,定義方法可以減少重復(fù)的代碼,也能使得整個程序結(jié)構(gòu)更加清爽。
假如我們需要計算兩個數(shù)的加和
public class Test{ public static void main(String[] args){ // 定義兩個變量,so easy int a = 10,b = 5; int c = a + b; System.out.println(c);// 15 } }
1
2
3
4
5
6
7
8
如果我們需要多次反復(fù)執(zhí)行同一個邏輯,那么就會產(chǎn)生很多相同的代碼
public class Test{ public static void main(String[] args){ int a = 10,b = 5; int c = 20,d = 10; // 可以看到,雖然變量名稱不同,但是計算的邏輯是相同的 // 如果某一段代碼反復(fù)出現(xiàn),我們可以考慮將他提取出來變成一個方法 int e = a + b; System.out.println(e);// 15 int f = c + d; System.out.println(f);// 30 int g = e + f; System.out.println(g);// 45 } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
定義方法后調(diào)用
public class Test{ public static void main(String[] args){ int a = 10,b = 5; int c = 20,d = 10; // 原有的代碼邏輯將轉(zhuǎn)變?yōu)榉椒ǖ恼{(diào)用 plus(a,b);// 執(zhí)行方法時輸出:15 plus(c,d);// 執(zhí)行方法時輸出:30 plus(e,f);// 執(zhí)行方法時輸出:45 } // 定義一個用于計算兩個數(shù)加和的方法,計算后輸出結(jié)果 public static void plus(int m,int n){ int result = m + n; System.out.println(result); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
從以上的例子我們可以看到:
從結(jié)構(gòu)上來說,方法就是由多行代碼所組成的集合
從使用的角度來看,定義方法的目的是抽取出通用的部分,可以減少重復(fù)代碼的出現(xiàn)
從最終的效果來看,多行代碼的執(zhí)行轉(zhuǎn)化為了方法的調(diào)用
2. 定義的格式
如果我們想定義一個方法,那就需要先了解定義方法的結(jié)構(gòu),按照次序分別為:
修飾符:對方法進行相關(guān)的限定,出現(xiàn)在返回值類型之前
權(quán)限修飾符:一般我們會將權(quán)限修飾符寫在方法定義的最前面,它指明了這個方法都可以在什么地方被調(diào)用,最開始都聲明為public即可
其他修飾符:可以修飾方法的關(guān)鍵詞還有static,final等,會在其他文章中逐一介紹,修飾符的先后順序沒有嚴(yán)格要求
返回值類型:指明了方法執(zhí)行后是否需要進行返回,以及相應(yīng)的類型
方法名:指定方法的名稱,方法被調(diào)用時使用,在同一類中同名方法將構(gòu)成重載
參數(shù)列表:聲明調(diào)用方法時需要傳入的參數(shù),可以為空,也可以多個
方法體:方法被調(diào)用時所執(zhí)行的代碼,是方法的核心部分,需要與方法的返回值類型呼應(yīng)
3. 方法的簽名
方法名稱和參數(shù)列表構(gòu)成了方法簽名,方法簽名可以唯一的確定一個方法,并且對鑒別是否構(gòu)成重載十分有用。
public class Test{ // 方法簽名:main(String[] args) public static void main(String[] args){ int a = 10,b = 5; int c = plus(a,b); } // 方法簽名:plus(int m,int n) public static int plus(int m,int n){ return m + n; } }
1
2
3
4
5
6
7
8
9
10
11
4. 方法的注釋
在定義一個方法后,我們在使用編譯器調(diào)用時只能夠查看到方法簽名及返回值類型,我們希望對于相近或重載的方法進一步進行描述,有利于使用者對方法的區(qū)分。
對方法添加注釋時需要使用文檔注釋,稱之為javadoc,這樣在進行調(diào)用時就可以顯示方法的相關(guān)信息,對于方法的注釋主要包括以下幾個部分:
方法作用描述:描述方法的作用
方法參數(shù)描述:@param,解釋每個參數(shù)代表的含義
返回類型描述:@return,解釋返回值代表的含義
在編譯器中可以輸入/**快速生成一個方法的模板,效果如下:
public class Test{ /** * 計算兩個數(shù)的加和 * @param a 第一個加數(shù) * @param b 第二個加數(shù) * @return 兩個數(shù)的加和 */ public int plus(int a,int b){ return a + b; } }
1
2
3
4
5
6
7
8
9
10
11
二、方法的設(shè)計
明確了方法的定義結(jié)構(gòu)之后,我們需要做的就是希望在解決實際問題時知道如何去定義一個方法,并且有一個清晰的思路。
1. 方法設(shè)計的思路
筆者認為一個方法的設(shè)計其實更像是整個編程思想的縮影,無論是完成一個復(fù)雜的功能還是某一個方法的定義都可以按照下面三個步驟來進行:
What I want?
要定義一個方法,就要先明確:我需要完成怎樣一個功能,用于解決一個什么樣的問題?明確了之后我們就可以知道這個方法的用途,進而確定方法的名稱、返回值類型、調(diào)用訪問的權(quán)限、是否有其他修飾符。
What I need?
接下來要我們要根據(jù)方法的用途,考慮這個方法執(zhí)行時都需要什么,是否需要傳入一些參數(shù)?于是我們可以確定參數(shù)列表的部分了。
How to do?
在明確了方法要解決的問題以及所需要的參數(shù)之后,我們就可以分析方法中用該編寫什么樣的代碼來解決問題,也就是最后確定方法體的部分,用上傳遞進來的參數(shù),最后返回應(yīng)該返回的變量或進行打印輸出。
2. 方法名稱的確定
方法名稱的定義比較容易,因為自定義的程度較高,沒有什么強制性的規(guī)則,只要滿足標(biāo)識符的規(guī)定就可以了。一般來說,方法的命名也需要做到見名知意,以小寫字母開頭,如果遇到多個單詞首字母大寫,可以是字母和數(shù)字的組合。
3. 參數(shù)列表的確定
參數(shù)列表的確定主要就是考慮調(diào)用方法時需要傳入的參數(shù)的類型,可以為空,也可以為一個至多個,分別需要聲明類型和名稱。
聲明的類型用于限制調(diào)用方法時傳入?yún)?shù)的類型
聲明的名稱用于代表傳遞進來的參數(shù)
除此之外,我們還需要了解一下各種參數(shù)類型之間的差別:
基本數(shù)據(jù)類型:對于基本數(shù)據(jù)類型,我們可以認為是值的傳遞,即:這是一個值拷貝之后,復(fù)制的過程,我們在方法中如果對參數(shù)的值進行修改,也不會改變原有的值。
public class Test{ public static void main(String[] args){ int a = 10; test(a);// 進行方法的調(diào)用,方法中對值進行了修改 System.out.println(a);// 結(jié)果為10 } public static void test(int n){ System.out.println(n);// 接收到值,結(jié)果為10 n = 100;// 修改n的值,不會影響傳入的參數(shù)a的值 System.out.println(n);// 結(jié)果為100 } }
1
2
3
4
5
6
7
8
9
10
11
12
引用類型:包括數(shù)組在內(nèi)的引用類型,也就是除了基本數(shù)據(jù)類型以外的其他類型,在進行傳遞時發(fā)生的是引用傳遞,也就是說參數(shù)接收到的是一個引用,相當(dāng)于多了一個變量指向了同一個位置,這樣在方法中進行的修改直接會作用在對象實例上。
public class Test{ public static void main(String[] args){ int[] a = {1,2,3}; test(a);// 進行方法的調(diào)用,方法中對數(shù)組a進行了修改 for(int i = 0;i < a.length;i++){ System.out.println(n);// 結(jié)果為10,20,30 } } public static void test(int[] n){ for(int i = 0;i < n.length;i++){ System.out.println(n[i]);// 接收數(shù)組的引用,結(jié)果為:1,2,3 } for(int i = 0;i < n.length;i++){ n[i] = n[i] * 10;// 修改數(shù)組的值,每個元素變?yōu)樵瓉淼?0倍 } // 對于修改對象的屬性值同理,直接作用在對象本身 } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
可變參數(shù):可變參數(shù)與數(shù)組類似,但是卻有所不同,允許調(diào)用時以羅列的方式將參數(shù)傳進來
可變參數(shù)又叫不定參數(shù),從字面解釋就是:有的時候我不確定參數(shù)到底有幾個,但是又不想每次都構(gòu)建一個數(shù)組,這個時候就可以使用不定參數(shù)
可變參數(shù)在一個方法的定義中只能出現(xiàn)一個
可變參數(shù)只能出現(xiàn)在參數(shù)列表的最后一個位置
不建議使用Object類型作為可變參數(shù)類型,將在方法重載時說明
聲明格式:參數(shù)類型… 參數(shù)名稱,如:int… nums
public class Test{ public static void main(String[] args){ int a = 1; int b = 2; int c = 3; test(null);// 調(diào)用成功,此時參數(shù)為null test();// 調(diào)用成功,此時參數(shù)個數(shù)為0 test(a);// 調(diào)用成功,傳入1個參數(shù) test(a,b);// 調(diào)用成功,傳入2個參數(shù) test(new int[]{a,b,c});// 調(diào)用成功,也可構(gòu)建成數(shù)組后傳入 } public static void test(int... nums){ // 將nums當(dāng)成數(shù)組一樣使用即可,可以通過判斷數(shù)組長度確定傳入?yún)?shù)的個數(shù) // 前提是傳入的參數(shù)不為null,否則會出現(xiàn)空指針異常 if(nums == null){ System.out.println("傳入的參數(shù)為null"); }else{ System.out.println("傳入的參數(shù)個數(shù)為:" + nums.length); } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
4. 返回類型的確定
如何確定一個方法是否需要有返回值呢?在上述的方法中,在返回值類型的部分我們使用的都是void關(guān)鍵字,代表此方法返回值為空,或無需返回。其實,對于一個方法是否需要返回這不是一個語法問題,而是取決于我們使用者的需要,我們來討論一下這兩種情況。
void:代表方法執(zhí)行后不需要指定返回值,也就是不需要使用return關(guān)鍵字,只需要完成方法的邏輯,輸出某些信息,或者通過引用修改對象的某些屬性。
其他類型
返回值類型只能指定一種,但可以是數(shù)組類型
如果聲明了返回值類型,那么必須配合return關(guān)鍵字一同使用
return在一般情況下只能出現(xiàn)在方法的最后一行,作為方法的結(jié)束
在選擇結(jié)構(gòu)中,也可能不會出現(xiàn)在最后一行的位置,可以根據(jù)需要提前結(jié)束某一個方法,但是必須保證選擇結(jié)構(gòu)對應(yīng)的所有情況都有相應(yīng)的返回值
return后只能跟一個變量的名稱或表達式,變量或表達式結(jié)果的類型必須和返回值類型相同
如果需要同時返回多個變量的值,可以使用數(shù)組
如果需要同時返回多種類型的變量,可以將返回值類型聲明為:Object[]
public class Test{ public static void main(String[] args){ // 需要實現(xiàn)如下邏輯:計算兩個數(shù)的加和,并將得到的結(jié)果變?yōu)?0倍后輸出 int a = 1,b = 2; // 在進行方法調(diào)用后,我們必須想辦法先得到兩個數(shù)計算加和的結(jié)果,再繼續(xù)下一步 int c = plus(a,b); // 使用對應(yīng)類型的變量(c)接收返回結(jié)果,然后繼續(xù)下一步操作 int result = c * 10; System.out.println(result); } public static int plus(int a,int b){ return a + b; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
5. 方法內(nèi)容的確定
能夠根據(jù)需要熟練并快速的寫出方法體中的內(nèi)容這是一個長期訓(xùn)練和鍛煉的過程,有的時候我們并不是不知道如何使用方法這種結(jié)構(gòu),而是給出的問題根本沒有任何的思路。在這里筆者將給大家一些建議,因為舉再多的例子也無法在短時間內(nèi)對大家有實質(zhì)性的幫助。
其實程序本身只是我們一種邏輯思維表達,而且計算機真的很笨,所有的步驟都需要你一步一步去告訴他,比如你想寫一個判斷素數(shù)的程序,不要指望你定義一個變量i,然后使用選擇結(jié)構(gòu)在判斷條件中寫上:if(i == 素數(shù)){}計算機就能明白,你首先要讓計算機明白什么是素數(shù),或者符合什么樣的條件的數(shù)是素數(shù)。基本上所有的問題都可以轉(zhuǎn)換為一個數(shù)學(xué)問題,或者是具有步驟的邏輯問題,特別是我們要讓計算機幫助我們?nèi)ネ瓿梢豁棽僮骰蚬δ艿臅r候,你必須告訴它明確的步驟,以及遇到各種情況要如何處理,畢竟大佬是這么說的:
很多同學(xué)看到這句話的第一反應(yīng)可能是:我信你個鬼!你個xx頭子壞得很。但是仔細想想其實很有道理,特別是對于初學(xué)者,我們在學(xué)習(xí)編程時一定要嘗試去理解計算機是如何工作的,如何教會它來幫助我們解決問題。
那么筆者的建議可以概括為以下幾點:
不要著急開始一個方法的編寫
首先理清問題的解決步驟
如果可能,對每一個步驟進行細化,分析可能出現(xiàn)的情況,給出解決的辦法
結(jié)合所學(xué)的語法知識,將每一個步驟翻譯為相應(yīng)的結(jié)構(gòu)或代碼
如果沒有解決問題,重復(fù)以上步驟
經(jīng)歷幾次之后你就可以完全在大腦中完成這幾個步驟,順暢的寫出方法的內(nèi)容
三、方法的調(diào)用
當(dāng)一個方法被定義以后,只有被調(diào)用了才會被執(zhí)行,否則也是沒有意義的。
1. 方法調(diào)用的格式
根據(jù)上面的例子,我想對于方法的調(diào)用方式大家已經(jīng)掌握了。沒錯,很簡單:方法名稱 + 傳入?yún)?shù)。有關(guān)于參數(shù)的寫法上需要作出一點說明,在進行方法定義時,我們需要聲明參數(shù)的類型,而在調(diào)用方法,傳入?yún)?shù)時,我們需要做的僅僅是匹配,不要再次聲明參數(shù)的類型,而只需要保證傳入的參數(shù)與定義的類型相匹配就好,可以傳入一個具體的值,也可以是聲明賦值后的變量,還是那句話:
類型匹配就好
。
2. 方法的執(zhí)行過程
方法的執(zhí)行過程其實比較簡單,具體的包含嵌套調(diào)用的結(jié)構(gòu)我們將在后面的文章中說明。方法的執(zhí)行過程其實用到的了一個最基本的結(jié)構(gòu):順序結(jié)構(gòu)。如果一段代碼在執(zhí)行的過程中遇到了方法調(diào)用,那么一定會進入到方法中,將方法中的代碼全部執(zhí)行完畢,再返回到方法的調(diào)用處,繼續(xù)執(zhí)行后面的代碼。
那么這里也給大家解釋一下初學(xué)者的問題:你說方法中定義的return是返回的意思,那到底返回到哪去了?什么時候返回的?
解釋這個問題可以用一句話概括:返回到了調(diào)用該方法的位置。首先,只有一個方法被調(diào)用以后,才會執(zhí)行其中的代碼,才會輪到return語句的執(zhí)行,那么return之后去哪了呢?自然是返回到調(diào)用這個方法的位置繼續(xù)執(zhí)行,這個時候,整個方法的調(diào)用語句就代表了這個方法的返回值,我們直接使用對應(yīng)類型的變量接收就可以了。
public class Test{ public static void main(String[] args){ // 需要實現(xiàn)如下邏輯:計算兩個數(shù)的加和,并將得到的結(jié)果變?yōu)?0倍后輸出 int a = 1,b = 2;// 代碼執(zhí)行步驟:1 // 代碼執(zhí)行步驟:2,進行方法的調(diào)用 int c = plus(a,b);// 代碼執(zhí)行步驟:4,進行返回值的賦值 int result = c * 10;// 代碼執(zhí)行步驟:5 System.out.println(result);// 代碼執(zhí)行步驟:6 } public static int plus(int a,int b){ return a + b;// 代碼執(zhí)行步驟:3 } }
1
2
3
4
5
6
7
8
9
10
11
12
13
3. 調(diào)用的注意事項
static修飾符
static修飾符有很多作用,我們這里只討論它用在方法上時,對方法的調(diào)用產(chǎn)生怎樣的影響。由于main方法是程序的入口,那么它必須使用static聲明,即:不需要實例化對象即可直接執(zhí)行。那么由于main方法是static修飾的,那么它直接調(diào)用的方法必須也是由靜態(tài)(static)修飾的。
接收返回值
具有返回值的方法在調(diào)用后,是不是一定要對返回值進行接收呢?當(dāng)然不是必須的,如果不接收,方法的值也會正常返回,只不過隨即被丟棄了而已。接收時將方法調(diào)用語句看成一個整體,直接用對應(yīng)類型的變量賦值接收即可。
四、方法的重載
1. 重載的概念
重載指的是
在一個類中,可以定義多個同名的方法,區(qū)別在于參數(shù)列表不同
。對于重載的概念還是很好理解的,無非是描述了一種現(xiàn)象,在一個類中存在了很多名字相同的方法,大家需要掌握的就是如何定義才符合重載的規(guī)則,以及重載有什么用?
方法名稱相同,參數(shù)列表不同
不要看這個概念簡單,還是有很多同學(xué)在此翻車。方法名稱相同很好理解,完全一致的才叫做相同,這里對大小寫敏感。另外一個概念是:參數(shù)列表不同,大家一定要注意,參數(shù)列表相同與否,是
靠參數(shù)類型以及排列順序來決定的,與參數(shù)名稱無關(guān)
。因為參數(shù)列表中聲明的參數(shù)名稱只是傳入?yún)?shù)的一個代表,并不具備什么具體的區(qū)分意義。
public class Test{ // 求兩個整數(shù)和的方法:plus public int plus(int a,int b){ return a + b; } // 參數(shù)列表相同,不構(gòu)成重載,不能在類中同時存在 public int plus(int c,int d){ return c + d; } // 參數(shù)列表不同,構(gòu)成重載 public double plus(double a,double b){ return a + b; } // 參數(shù)列表不同,構(gòu)成重載,但是不定參數(shù)容易構(gòu)成調(diào)用的歧義,不推薦 public int plus(int... a){ return 0; } // 參數(shù)列表相同,方法名稱不同,不構(gòu)成重載,可以在類中同時存在 public int Plus(int a,int b){ return a + b; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
方法重載有什么用?
在很多時候,我們使用方法完成一個功能或邏輯,存在很多種情況,有些情況來自于代碼邏輯處理的過程中,也有些情況是要對不同的參數(shù)類型做出不同的操作。這個時候我們就可以利用重載的特點,用相同的方法名代表我們要處理的邏輯是類似的,然后在參數(shù)列表中聲明不同的參數(shù)類型,這樣就可以避免我們在方法中再繁雜的寫各種參數(shù)個數(shù)的判斷,參數(shù)類型的判斷,更加利于維護。同時,使用相同的方法類型,也使得使用者在調(diào)用時變得十分方便,不需要在同一功能上記憶各種不同的方法名稱,同時又能很好的解決問題。
2. 重載方法的調(diào)用
對于重載方法的調(diào)用,由于方法名稱相同,jvm主要就是根據(jù)傳入的參數(shù)類型來進行區(qū)分,效果如下:
public class Test{ public static void main(String[] args){ int a = 1,b = 2; int c = plus(a,b);// 調(diào)用plus(int a,int b) double m = 1.0,n = 2.0; double d = plus(m,n);// 調(diào)用plus(double a,double b) } // 求兩個整數(shù)和的方法:plus public static int plus(int a,int b){ return a + b; } // 方法名相同,參數(shù)列表不同,構(gòu)成重載 public static double plus(double a,double b){ return a + b; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
從上面的例子我們可以看到,在執(zhí)行方法調(diào)用時主要是通過參數(shù)類型來進行區(qū)分的。但是當(dāng)方法中出現(xiàn)不定參數(shù)時要尤為注意:
public class Test{ public static void main(String[] args){ int a = 1,b = 2,c = 3; int d = plus(a);// 編譯失敗,與plus(int... a)和plus(int a,int... b)都匹配 int e = plus(a,b);// 編譯成功,調(diào)用plus(int a,int b) int f = plus(a,b,c);// 編譯失敗,與plus(int... a)和plus(int a,int... b)都匹配 int g = plus(new int[]{a,b});// 編譯成功,調(diào)用plus(int... a) int h = plus(a,new int[]{b,c});// 編譯成功,調(diào)用plus(int a,int... b) } // 求兩個整數(shù)和的方法:plus public static int plus(int a,int b){ return a + b; } // 方法名稱相同,參數(shù)列表不同,構(gòu)成重載,但是不定參數(shù)容易構(gòu)成調(diào)用的歧義,不推薦 public int plus(int... a){ return 0; } // 方法名稱相同,參數(shù)列表不同,構(gòu)成重載,但是不定參數(shù)容易構(gòu)成調(diào)用的歧義,不推薦 public int plus(int a,int... b){ return 0; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
從以上的例子我們可以看到,如果重載方法中出現(xiàn)了不定參數(shù),那么在調(diào)用時很可能出現(xiàn)歧義,依然要通過手動構(gòu)建數(shù)組的方式來解決,所以在進行方法重載時應(yīng)該盡量避免出現(xiàn)不定參數(shù),當(dāng)不定參數(shù)是Object類型時,歧義問題就會更加嚴(yán)重。
Java 數(shù)據(jù)結(jié)構(gòu)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。