java中構(gòu)造方法和普通方法的區(qū)別說明
1.普通方法:
定義:簡單的說方法就是完成特定功能的代碼塊。
普通方法定義格式:
修飾符 返回值類型 方法名 (參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,.........) { 函數(shù)體; return 返回值; }
返回值類型用于限定返回值的數(shù)據(jù)類型。
普通方法分為:有明確返回值的方法和沒有明確返回值的方法。
A.有明確返回值的方法的調(diào)用
可以單獨調(diào)用(無意義)、輸出調(diào)用、賦值調(diào)用(推薦)。
public static int sum (int a , int b) { int c =a+b; return c ; } public static void main(String[] args) { //sum(10,20); //單獨調(diào)用 //System.out.println(sum(10,20)); //輸出調(diào)用 int sum01 =sum(10,20); //賦值調(diào)用 }
B.沒有明確返回值的方法調(diào)用(void類型方法的調(diào)用)
只能單獨使用。
(如果一個方法沒有明確的返回值類型,方法定義中的“返回值類型”就用void代替,表示該方法無返回值類型。)
2.構(gòu)造方法
定義:簡單的來說是給對象的數(shù)據(jù)進行初始化的。
構(gòu)造方法是類的一個特殊的成員,在類實例化時會自動調(diào)用。
構(gòu)造方法定義格式:
修飾符 方法名() { }
注意:
1.方法名與類名相同。
2.沒有返回值類型。 3.沒有具體的返回值。
構(gòu)造方法分為:無參構(gòu)造方法和有參構(gòu)造方法。
A.無參構(gòu)造方法
public class Student{ public Student(){ //無參構(gòu)造方法 System.out.println("無參方法被調(diào)用"); } } public class Test { public static void main (String[] args){ Student stu = new Student(); //實例化Student對象 } }//該方法是無參的構(gòu)造方法,即構(gòu)造方法不接收參數(shù),執(zhí)行后輸出即可,無參的構(gòu)造方法被調(diào)用。
B.無參構(gòu)造方法
為一個屬性賦值有兩種方法:①、直接訪問對象屬性 ②、通過setXxx()方法
如果想在實例化對象的同時就為這個對象的屬性進行賦值,可以通過帶參數(shù)的構(gòu)造方法來實現(xiàn)
public class Student{ private String name; private int age; public Student(String name,int age){ //有參構(gòu)造方法 this name = name; this age = age ; } public void show (){ System.out.println("姓名:"+name+"年齡:"+age); } } public class Test02(){ public static void main (String[] args) { Student stu = new Student("王小五",25); //實例化對象的同時賦值 stu.show(); } }
構(gòu)造方法注意事項:
1.java中的每一個類都至少有一個構(gòu)造方法,如果我們沒有創(chuàng)建,系統(tǒng)會為我們創(chuàng)建一個默認的無參構(gòu)造方法。(不顯示代碼)
2.但是如果我們定義了構(gòu)造方法,系統(tǒng)就不會再為我們提供默認的無參構(gòu)造方法了。這個時候想使用無參構(gòu)造方法必須自己定義。因為實例化對象時,不一定會輸入?yún)?shù),那么沒有無參的構(gòu)造方法,又不輸入?yún)?shù),就會出錯。
3.構(gòu)造方法需要用public來修飾,若使用private,在其他類中無法將其實例化。
4.構(gòu)造方法是可以重載的。
補充知識:java中 concat()方法 , "+"和append()方法的區(qū)別?
由下面的例子可看出,"+"和append()方法都可以對任意類型數(shù)據(jù)進行拼接,而concat()方法則需要將其他類型的數(shù)據(jù)則要轉(zhuǎn)化為字符串后才能拼接
package 練習題; import java.util.ArrayList; import java.util.List; public class 練習題29 { public static void main(String[] args) { List<Object> list=new ArrayList<Object>(); list.add(100); list.add('日'); list.add("沖刺,決勝高考!"); StringBuffer sb=new StringBuffer(); for(char i=0;i<list.size();i++){ sb.append(list.get(i)); } System.err.println(sb); String s1=""; for(char i=0;i<list.size();i++){ s1=s1+list.get(i); } System.err.println(s1); String s2=""; for(char i=0;i<list.size();i++){ s2=s2.concat( list.get(i).toString()); } System.err.println(s2); String str1=""; System.err.println(str1.concat(null)); //運行后報空指針異常NullPointerException String str2=null; System.err.println(str2.concat("asdf"));//運行后報空指針異常NullPointerException } }
輸出結(jié)果:
100日沖刺,決勝高考!
100日沖刺,決勝高考!
100日沖刺,決勝高考!
Exception in thread "main" java.lang.NullPointerException
concat()方法:String類的concat()方法(只能用于拼接字符串,不能拼接其他類型的數(shù)據(jù))將指定的字符串拼接到該字符串的末尾。并且字符串本身和拼接的字符串都不能為null,否則運行程序后會報空指針異常NullPointerException(編譯時沒有報錯)。
"+":可以對字符,數(shù)字,字符串等數(shù)據(jù)類型的拼接
append()方法:可以對字符,數(shù)字,字符串等數(shù)據(jù)類型的拼接,結(jié)果返回一個StringBuffer類型的對象
以上這篇java中構(gòu)造方法和普通方法的區(qū)別說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud協(xié)同開發(fā)實現(xiàn)方法淺析
好幾個人同時開發(fā)同一個服務(wù)上的不同模塊,導(dǎo)致你需要調(diào)試的接口總是被路由到別人的服務(wù)上,非常影響調(diào)試的效率,而且人越多越難受,總是請求不到自己的服務(wù),這篇文章主要介紹了SpringCloud協(xié)同開發(fā)實現(xiàn)方法2022-12-12Java數(shù)據(jù)結(jié)構(gòu)之鏈表實現(xiàn)(單向、雙向鏈表及鏈表反轉(zhuǎn))
這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之鏈表實現(xiàn)的相關(guān)資料,其中包括單向鏈表、雙向鏈表及鏈表反轉(zhuǎn)的實現(xiàn)代碼,需要的朋友可以參考下2021-06-06java設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)
下面小編就為大家?guī)硪黄猨ava設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Spring中的Schedule動態(tài)添加修改定時任務(wù)詳解
這篇文章主要介紹了Spring中的Schedule動態(tài)添加修改定時任務(wù)詳解,可能有人會問,為啥不用Quartz,Quartz自然是非常方便強大的,但不是本篇要講的內(nèi)容,本篇就偏要使用SpringSchedule來實現(xiàn)動態(tài)的cron表達式任務(wù),需要的朋友可以參考下2023-11-11Nacos docker單機模式部署實現(xiàn)過程詳解
這篇文章主要介紹了Nacos docker單機模式部署實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09Java數(shù)據(jù)結(jié)構(gòu)之雙向鏈表圖解
這篇文章主要為大家詳細介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙向鏈表,文中圖解分析的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05Java算法之BFS,DFS,動態(tài)規(guī)劃和貪心算法的實現(xiàn)
廣度優(yōu)先搜索(BFS)和深度優(yōu)先搜索(DFS)是圖遍歷算法中最常見的兩種算法,主要用于解決搜索和遍歷問題。動態(tài)規(guī)劃和貪心算法則用來解決優(yōu)化問題。本文就來看看這些算法的具體實現(xiàn)吧2023-04-04