欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java構(gòu)造器與傳值學(xué)習(xí)總結(jié)

 更新時(shí)間:2022年01月18日 13:35:58   作者:Benjamin.  
這篇文章主要為大家詳細(xì)介紹了Java構(gòu)造器與傳值學(xué)習(xí)總結(jié),文中示例介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文主要學(xué)習(xí)Java構(gòu)造器與傳值,供大家參考,具體內(nèi)容如下

構(gòu)造器

構(gòu)造器介紹

構(gòu)造器是Java學(xué)習(xí)中一個(gè)很重要的概念,每個(gè)類的對(duì)象在使用關(guān)鍵字new實(shí)例化的時(shí)候,Java虛擬機(jī)都會(huì)給這個(gè)實(shí)例化的對(duì)象自動(dòng)調(diào)用一個(gè)無參構(gòu)造器,但是當(dāng)我們自己寫有構(gòu)造器時(shí),Java虛擬機(jī)將不再為我們調(diào)用這個(gè)無參構(gòu)造器,而是我們要遵循我們自己寫的構(gòu)造器的參數(shù)規(guī)則來進(jìn)行實(shí)例化。構(gòu)造器不需要返回值類型,同時(shí)它也可以提供很多方法,最主要的功能是初始化類的變量成員。一個(gè)類可以有多個(gè)不同的構(gòu)造器,但是這些構(gòu)造器的參數(shù)列表的數(shù)量、類型、或者順序上的差異,而不是同類型不同變量名的差異。

構(gòu)造器代碼演示

無參構(gòu)造器

public class ConstructDisplay {

?? ?public static void main(String[] args) {
?? ??? ?ConstructDisplay display=new ConstructDisplay();
?? ??? ?//我們沒有自己定義類的構(gòu)造器
?? ??? ?//所以Java虛擬機(jī)為我們自動(dòng)調(diào)用了無參構(gòu)造器

?? ?}

}

自定義構(gòu)造器

public class ConstructDisplay {

?? ?String name;
?? ?int age;
?? ?
?? ?public ConstructDisplay(String name) {
?? ?//this.name指的是調(diào)用這個(gè)構(gòu)造器對(duì)象的name屬性
?? ?//而等號(hào)右邊的name才是
?? ?//public ConstructDisplay(String name)中的形參name
?? ??? ?this.name=name;
?? ?}
?? ?
?? ?public ConstructDisplay(int age) {
?? ??? ?this.age=age;
?? ?}
?? ?
?? ?public static void main(String[] args) {
?? ??? ?ConstructDisplay display=new ConstructDisplay("1");
? ? ? ? ConstructDisplay display2=new ConstructDisplay(1);
?? ?}

}

在上面的代碼中,在我們沒有定義無參構(gòu)造器這種情況下,我們將不能在實(shí)例化對(duì)象時(shí)再調(diào)用無參構(gòu)造器。

this與super

this關(guān)鍵字

當(dāng)一個(gè)對(duì)象被創(chuàng)建好之后,Java虛擬機(jī)就會(huì)為這個(gè)對(duì)象分配一個(gè)引用自身的指針this,Java中為了解決變量命名的沖突與不確定性等問題,引入關(guān)鍵字this代表其所在方法的當(dāng)前對(duì)象。

在代碼中使用this關(guān)鍵字

構(gòu)造器中的this

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int num;
?? ? ?int age;
? ? ? ?? ?
?? ? ?public Tree(String name) {
?? ??? ? ?System.out.print("樹的品種是"+name+",");
?? ? ?}
?? ? ?
??? ? ?public Tree(int age) {
?? ??? ? ?this("蘋果樹");
?? ??? ? ? //調(diào)用Tree的其他構(gòu)造器
?? ??? ? ?System.out.println("它的樹齡為"+age+"年.");
?? ? ?}
?? ? ?
?? ? ? public Tree() {
?? ? ? ? this(10);
?? ? ? ? //調(diào)用Tree的其他構(gòu)造器
?? ? ? ? System.out.println(".......");
?? ?}
? ? ? ?? ?
? ? ? ? public static void main(String[] args) {
?? ??? ??? ?Tree tree=new Tree();
?? ??? ?}
}
//run:
//樹的品種是蘋果樹,它的樹齡為10年.
//.......

這里需要注意的是,在構(gòu)造器中使用this調(diào)用其他構(gòu)造器時(shí)要把調(diào)用的代碼放在該構(gòu)造器的第一句。構(gòu)造器中賦值this的用法在上面介紹構(gòu)造器時(shí)就使用了這個(gè)寫法,所以就不在這里重復(fù)了。

構(gòu)造方法中的this

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int age;
? ? ??
?? ? ?
?? ? ?public void setAge(Tree t) {
?? ??? ? ?t.age=10;
?? ? ?}
?? ? ?
?? ? ?public void setName(String name) {
?? ??? ? ?this.name=name;
?? ??? ? ?//將當(dāng)前調(diào)用setName的對(duì)象作為實(shí)參傳給setAge的形參t
?? ??? ? ?setAge(this);
?? ? ?}
? ? ? ?? ?
? ? ? ? public static void main(String[] args) {
?? ??? ??? ?Tree tree=new Tree();
?? ??? ??? ?tree.setName("蘋果樹");
?? ??? ??? ?System.out.println(tree.name+"的樹齡為"+tree.age);
?? ??? ?}
}
//run:蘋果樹的樹齡為10

在代碼中使用super關(guān)鍵字

構(gòu)造器與方法中的super

class BananaTree extends Tree{

?? ?public BananaTree(String name, int age) {
?? ?//第一個(gè)super調(diào)用父類的構(gòu)造器
?? ??? ?super(name, age);
? ? //第二個(gè)super調(diào)用父類的方法setName
?? ??? ?super.setName("香蕉樹");
?? ?}
?? ?
}

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int age;
? ? ??
?? ? ?public Tree(String name,int age) {
?? ??? ?this.name=name;
?? ??? ?this.age=age;
?? ?}
?? ? ?
?? ? ?public void setName(String changeName) {
?? ??? ? ?this.name=changeName;
?? ? ?}
?? ? ? ??? ?
? ? ? ? public static void main(String[] args) {
?? ??? ? ? BananaTree tree=new BananaTree("蘋果樹", 10);
?? ??? ? ? System.out.println(tree.name+"的樹齡為"+tree.age);
?? ??? ?}
}

super關(guān)鍵字僅在子類中使用,它用來調(diào)用調(diào)用父類的屬性、構(gòu)造器或者方法,所以super常與繼承一起出現(xiàn)。

傳值與傳引用

傳值與傳引用的區(qū)別

傳值就是將當(dāng)前變量的值傳遞給另外一個(gè)與當(dāng)前變量不相關(guān)聯(lián)的另一個(gè)變量,另一個(gè)變量的操作不會(huì)對(duì)當(dāng)前的變量本身造成影響;而傳引用就是將本身傳遞給另一個(gè)變量指向,另一個(gè)變量對(duì)這個(gè)變量操作也會(huì)影響到當(dāng)前變量。

傳值與傳應(yīng)用代碼示例

傳值

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int age;
? ? ??
?? ? ?public Tree(String name,int age) {
?? ??? ?this.name=name;
?? ??? ?this.age=age;
?? ?}
?? ? ?
?? ? ?public void setName(String name) {
?? ??? ? ?name="香蕉樹";
?? ? ?}
?? ? ? ? ??? ?
? ? ? public static void main(String[] args) {
?? ??? ? ? Tree tree=new Tree("蘋果樹",10);
?? ??? ? ? tree.setName(tree.name);
?? ??? ? ? System.out.println(tree.name+"的樹齡為"+tree.age);
?? ??? ?}
}

傳引用

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int age;
? ? ??
?? ? ?public Tree(String name,int age) {
?? ??? ?this.name=name;
?? ??? ?this.age=age;
?? ?}
?? ? ?
?? ? ?public void setName(Tree otherTree) {
?? ??? ? ?otherTree.name="香蕉樹";
?? ? ?}
?? ? ? ? ??? ?
? ? ? public static void main(String[] args) {
?? ??? ? ? Tree tree=new Tree("蘋果樹",10);
?? ??? ? ? tree.setName(tree);
?? ??? ? ? System.out.println(tree.name+"的樹齡為"+tree.age);
?? ??? ?}
}

哪些情況下是傳值,哪些情況下是傳引用,我認(rèn)為不是一篇簡(jiǎn)單的博客就可以解釋的明白的,更重要的還是多打代碼,自己就能總結(jié)出什么情況是傳值,什么情況下是傳引用了。經(jīng)驗(yàn)都是自己慢慢總結(jié)出來噠,我也只是在這里跟小伙伴們提出這樣一個(gè)概念這樣子啦。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的堆排序詳解

    Java中的堆排序詳解

    這篇文章主要介紹了Java中的堆排序詳解,堆排序的重點(diǎn),在于排序的方式,堆排序,就是以堆的形式去排序,毫無疑問,了解堆很重要,文中提供了圖解與部分代碼,需要的朋友可以參考下
    2023-08-08
  • 詳解slf4j+logback在java工程中的配置

    詳解slf4j+logback在java工程中的配置

    這篇文章主要介紹了slf4j+logback在java工程中的配置,對(duì)日志組件logback也進(jìn)行了簡(jiǎn)單介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • mybatis中的異常BindingException詳解

    mybatis中的異常BindingException詳解

    這篇文章主要介紹了mybatis中的異常BindingException詳解,此異常是mybatis中拋出的,意思是使用的這個(gè)方法找到,但是因?yàn)閙apperScan()已經(jīng)掃描到了Mapper類了,在綁定Mapper.xml時(shí)沒有綁定到導(dǎo)致的,需要的朋友可以參考下
    2024-01-01
  • Java的List集合框架之ArrayList詳解

    Java的List集合框架之ArrayList詳解

    這篇文章主要介紹了Java的List集合框架之ArrayList詳解,ArrayList默認(rèn)容量為10(構(gòu)造方法未指定初始容量為0),擴(kuò)容是利用位運(yùn)算(右移一位)和直接相加進(jìn)行1.5倍擴(kuò)容,需要的朋友可以參考下
    2023-11-11
  • Eclipse中創(chuàng)建Web項(xiàng)目最新方法(2023年)

    Eclipse中創(chuàng)建Web項(xiàng)目最新方法(2023年)

    在Java開發(fā)人員中,最常用的開發(fā)工具應(yīng)該就是Eclipse,下面這篇文章主要給大家介紹了關(guān)于Eclipse中創(chuàng)建Web項(xiàng)目2023年最新的方法,需要的朋友可以參考下
    2023-09-09
  • SpringBoot通過Filter實(shí)現(xiàn)整個(gè)項(xiàng)目接口的SQL注入攔截詳解

    SpringBoot通過Filter實(shí)現(xiàn)整個(gè)項(xiàng)目接口的SQL注入攔截詳解

    這篇文章主要介紹了SpringBoot通過Filter實(shí)現(xiàn)整個(gè)項(xiàng)目接口的SQL注入攔截詳解,SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,在客戶端在向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,sql命令通過表單提交或者url字符串拼接傳遞到后臺(tái)持久層,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,需要的朋友可以參考下
    2023-12-12
  • java中文及特殊字符的校驗(yàn)方法

    java中文及特殊字符的校驗(yàn)方法

    這篇文章主要為大家詳細(xì)介紹了java中文及特殊字符的校驗(yàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 淺談spring-boot 允許接口跨域并實(shí)現(xiàn)攔截(CORS)

    淺談spring-boot 允許接口跨域并實(shí)現(xiàn)攔截(CORS)

    本篇文章主要介紹了淺談spring-boot 允許接口跨域并實(shí)現(xiàn)攔截(CORS),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • java使用JMF實(shí)現(xiàn)音樂播放功能

    java使用JMF實(shí)現(xiàn)音樂播放功能

    這篇文章主要為大家詳細(xì)介紹了java使用JMF實(shí)現(xiàn)音樂播放的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說明

    log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說明

    這篇文章主要介紹了log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說明,基于很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論