java中有關(guān)構(gòu)造方法中的輸出
有關(guān)構(gòu)造方法中的輸出
在構(gòu)造方法中的System.out.println是怎么運(yùn)行的呢?下面讓我們一起來(lái)看一下。
構(gòu)造方法中的System.out.println:
先來(lái)看一個(gè)例子
package testasdd;
public class Abcdefg {
String name;
int age;
Abcdefg(String namel,int agel){
name=namel;
age=agel;
System.out.println("我可謝謝你了");
}
void bank() {
System.out.println("可以的");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Abcdefg a= new Abcdefg("滑板", 22);
String name=a.name;
int age=a.age;
System.out.println("我是"+name+"玩了"+age);
a.bank();
}
}輸出如下:
我可謝謝你了
我是滑板玩了22
可以的
為什么構(gòu)造方法中的輸出也在控制臺(tái)輸出了呢?
因?yàn)闃?gòu)造方法在類(lèi)被實(shí)例化的時(shí)候會(huì)被調(diào)用。
也就是在我們,新鍵一個(gè)對(duì)象的時(shí)候構(gòu)造方法會(huì)被調(diào)用因此其中的System.out.println會(huì)在創(chuàng)建對(duì)象的時(shí)候被調(diào)用輸出。
這就是為什么我們明明沒(méi)有有關(guān)他的語(yǔ)句卻有這句輸出的原因了。
java中構(gòu)造方法的作用
初學(xué)Java的構(gòu)造方法時(shí),根本不能理解構(gòu)造方法有什么用,自己寫(xiě)程序的時(shí)候也從來(lái)沒(méi)有用過(guò)。于是剛開(kāi)始我寫(xiě)的程序是這樣的:
package test3;
public class Student {
private String name;
private long ID;
private double score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getID() {
return ID;
}
public void setID(long iD) {
ID = iD;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public static void main(String[] args) {
Student s = new Student();
s.setName("張三");
s.setID(170316);
s.setScore(86.0);
System.out.println("學(xué)號(hào)為" + s.getID + "的" + s.getName() + "的成績(jī)?yōu)? + s.getScore + "分。");
}
}然后我發(fā)現(xiàn),這樣寫(xiě)程序有弊端。就是比如我要登記學(xué)生的基本情況,有姓名、學(xué)號(hào)、年級(jí)班級(jí)、成績(jī)等等好多情況,如果有很多屬性,同時(shí)實(shí)例化了好多對(duì)象,我可能就會(huì)忘記忘記初始化一些屬性;同時(shí),這樣還需要寫(xiě)許多get和set方法,雖然可以由eclipse自動(dòng)生成,但還是顯得代碼很冗長(zhǎng),不便于閱讀。這個(gè)時(shí)候就顯示出構(gòu)造方法的重要性了。
構(gòu)造方法的主要作用就是創(chuàng)建對(duì)象。
構(gòu)造方法分為有參數(shù)和沒(méi)有參數(shù)兩種。有參數(shù)的構(gòu)造方法主要就是用于對(duì)創(chuàng)建出來(lái)的對(duì)象進(jìn)行初始化,比如下邊這個(gè)例子:
package test3;
public class Test_Constructor1 {
private String name;
private String gender;
private long ID;
private long birthday;
Test_Constructor1(String name, String gender, long ID, long birthday) {
this.name = name;
this.gender = gender;
this.ID = ID;
this.birthday = birthday;
}
public static void main(String[] args) {
Test_Constructor1 s = new Test_Constructor1("Lily", "女", 100001, 200000226);
System.out.println("姓名:" + s.name + " 性別:" + s.gender + " 學(xué)號(hào):" + s.ID + " 生日:" + s.birthday);
}
}在控制臺(tái)的輸出結(jié)果如下:

這樣在new一個(gè)對(duì)象出來(lái)的時(shí)候,就對(duì)它進(jìn)行了初始化,避免了某些屬性忘記初始化的問(wèn)題;同時(shí)可以看出代碼長(zhǎng)度遠(yuǎn)小于上一個(gè)例子,提高了程序的可閱讀性。
另一種是沒(méi)有參數(shù)的構(gòu)造方法,又叫缺省構(gòu)造方法。其實(shí),你的類(lèi)如果沒(méi)有定義任何構(gòu)造方法,Java的編譯器會(huì)配上一個(gè)自動(dòng)缺省構(gòu)造方法,這個(gè)構(gòu)造方法是空的,不做任何事情,只是為了滿足編譯需要?;蛘?,你也可以自己寫(xiě)一個(gè)空的構(gòu)造方法,在里邊對(duì)一些屬性賦值,或者執(zhí)行一些其他操作,比如下邊這個(gè)例子:
package test3;
public class Test_Constructor2 {
private int i;
Test_Constructor2() {
i = 5;
System.out.println("i的值是" + i);
}
public static void main(String[] args) {
Test_Constructor2 s = new Test_Constructor2();
}
}在控制臺(tái)的輸出結(jié)果如下:

沒(méi)有參數(shù)的構(gòu)造方法創(chuàng)建對(duì)象時(shí)也會(huì)被調(diào)用。創(chuàng)建對(duì)象時(shí),首先變量中的所有變量會(huì)得到零值,然后執(zhí)行定義初始化,最后執(zhí)行構(gòu)造方法。
其實(shí),構(gòu)造方法的主要作用就是為對(duì)象成員變量賦初始值,總是與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語(yǔ)句中——也就是說(shuō),只要你new一個(gè)對(duì)象出來(lái),就會(huì)相應(yīng)地調(diào)用這個(gè)類(lèi)的構(gòu)造方法。有參數(shù)的構(gòu)造方法可以對(duì)對(duì)象進(jìn)行初始化,但建議寫(xiě)了有參的構(gòu)造方法后再寫(xiě)一個(gè)無(wú)參的空的構(gòu)造方法,便于創(chuàng)建一個(gè)對(duì)象而不給它的成員變量賦初值。要注意,自己寫(xiě)了有參的構(gòu)造方法,編譯器是不會(huì)再補(bǔ)充一個(gè)缺省構(gòu)造方法的。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java基礎(chǔ)學(xué)習(xí)之構(gòu)造方法詳解
- java線程組構(gòu)造方法源碼解析
- 詳解Java的構(gòu)造方法及類(lèi)的初始化
- 深入探究Java線程的創(chuàng)建與構(gòu)造方法
- java中構(gòu)造方法及this關(guān)鍵字的用法實(shí)例詳解(超詳細(xì))
- Java字節(jié)緩存流的構(gòu)造方法之文件IO流
- Java構(gòu)造方法和方法重載詳解
- Java 構(gòu)造方法的使用詳解
- Java構(gòu)造方法 super 及自定義異常throw合集詳解用法
- java構(gòu)造器 默認(rèn)構(gòu)造方法及參數(shù)化構(gòu)造方法
- Java構(gòu)造方法有什么作用?
相關(guān)文章
Spring?@Cacheable指定失效時(shí)間實(shí)例
這篇文章主要介紹了Spring?@Cacheable指定失效時(shí)間實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
基于JavaBean編輯器讀取peroperties文件的實(shí)例
下面小編就為大家?guī)?lái)一篇基于JavaBean編輯器讀取peroperties文件的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
詳解如何在Java中使用阿里云對(duì)象存儲(chǔ)OSS
Java是世界上最流行的編程語(yǔ)言之一,擁有著廣泛的應(yīng)用場(chǎng)景和強(qiáng)大的生態(tài)系統(tǒng),阿里云對(duì)象存儲(chǔ) OSS 是一種企業(yè)級(jí)的云存儲(chǔ)服務(wù),本文將介紹如何在 Java 中使用阿里云對(duì)象存儲(chǔ) OSS,并寫(xiě)一點(diǎn)相應(yīng)的代碼示例供大家參考2023-06-06
Mybatis-plus:${ew.sqlselect}用法說(shuō)明
這篇文章主要介紹了Mybatis-plus:${ew.sqlselect}用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java面試Logback打印日志如何獲取當(dāng)前方法名稱(chēng)題解
這篇文章主要為大家介紹了Java面試Logback打印日志如何獲取當(dāng)前方法名稱(chēng)題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Java中String類(lèi)getBytes()方法詳解與完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Java中String類(lèi)getBytes()方法詳解與完整實(shí)例的相關(guān)資料,getBytes()是Java編程語(yǔ)言中將一個(gè)字符串轉(zhuǎn)化為一個(gè)字節(jié)數(shù)組byte[]的方法,需要的朋友可以參考下2023-10-10

