最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java構造器與傳值學習總結

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

本文主要學習Java構造器與傳值,供大家參考,具體內容如下

構造器

構造器介紹

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

構造器代碼演示

無參構造器

public class ConstructDisplay {

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

?? ?}

}

自定義構造器

public class ConstructDisplay {

?? ?String name;
?? ?int age;
?? ?
?? ?public ConstructDisplay(String name) {
?? ?//this.name指的是調用這個構造器對象的name屬性
?? ?//而等號右邊的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);
?? ?}

}

在上面的代碼中,在我們沒有定義無參構造器這種情況下,我們將不能在實例化對象時再調用無參構造器。

this與super

this關鍵字

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

在代碼中使用this關鍵字

構造器中的this

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

這里需要注意的是,在構造器中使用this調用其他構造器時要把調用的代碼放在該構造器的第一句。構造器中賦值this的用法在上面介紹構造器時就使用了這個寫法,所以就不在這里重復了。

構造方法中的this

public class Tree {
?? ??
?? ? ?String name;
?? ? ?int age;
? ? ??
?? ? ?
?? ? ?public void setAge(Tree t) {
?? ??? ? ?t.age=10;
?? ? ?}
?? ? ?
?? ? ?public void setName(String name) {
?? ??? ? ?this.name=name;
?? ??? ? ?//將當前調用setName的對象作為實參傳給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關鍵字

構造器與方法中的super

class BananaTree extends Tree{

?? ?public BananaTree(String name, int age) {
?? ?//第一個super調用父類的構造器
?? ??? ?super(name, age);
? ? //第二個super調用父類的方法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關鍵字僅在子類中使用,它用來調用調用父類的屬性、構造器或者方法,所以super常與繼承一起出現(xiàn)。

傳值與傳引用

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

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

傳值與傳應用代碼示例

傳值

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);
?? ??? ?}
}

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 如何通過Java生成一個隨機數(shù)

    如何通過Java生成一個隨機數(shù)

    當我們需要在Java中生成隨機數(shù)時,可以借助JDK中提供的Random類來實現(xiàn),通過使用Random類,我們可以輕松地生成各種類型的隨機數(shù),下面我們就來看看如何利用Random類生成隨機數(shù)吧
    2023-09-09
  • springboot接口參數(shù)為List的問題

    springboot接口參數(shù)為List的問題

    這篇文章主要介紹了springboot接口參數(shù)為List的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • resultMap標簽中里的collection標簽詳解

    resultMap標簽中里的collection標簽詳解

    這篇文章主要介紹了resultMap標簽中里的collection標簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 淺談springBean的作用域

    淺談springBean的作用域

    本文主要介紹了淺談springBean的作用域,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 使用MyBatis 動態(tài)update數(shù)據(jù)

    使用MyBatis 動態(tài)update數(shù)據(jù)

    使用mybatis寫sql,需要動態(tài)更新對象數(shù)據(jù),每次需要更新的字段不同,為了防止null空異常,就需要用動態(tài)sql了,下面給大家分享一段代碼關于mybatis動態(tài)update,需要的朋友參考下
    2016-11-11
  • 詳解Java中static關鍵字的使用和原理

    詳解Java中static關鍵字的使用和原理

    static可以用來修飾的成員變量和成員方法,被修飾的成員是屬于類的,而不是單單是屬于某個對象的。本文就來詳細說說他的使用和原理,需要的可以參考一下
    2022-10-10
  • Spring Boot學習入門之表單驗證

    Spring Boot學習入門之表單驗證

    表單驗證主要是用來防范小白搞亂網站和一些低級的黑客技術。Spring Boot可以使用注解 @Valid 進行表單驗證。下面這篇文章主要給大家介紹了關于Spring Boot學習入門之表單驗證的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Java中的動態(tài)代理和靜態(tài)代理詳細解析

    Java中的動態(tài)代理和靜態(tài)代理詳細解析

    這篇文章主要介紹了Java中的動態(tài)代理和靜態(tài)代理詳細解析,Java中的代理可以幫助被代理者完成一些前期的準備工作和后期的善后工作,但是核心的業(yè)務邏輯仍然是由被代理者完成,需要的朋友可以參考下
    2023-11-11
  • Spring如何按業(yè)務模塊輸出日志到不同的文件詳解

    Spring如何按業(yè)務模塊輸出日志到不同的文件詳解

    最近做項目時有一個記錄操作日志的需求,比如某個用戶進行了查詢、刪除、修改等操作,下面這篇文章主要給大家介紹了關于Spring如何按業(yè)務模塊輸出日志到不同文件的相關資料,需要的朋友可以參考下
    2022-05-05
  • Scala求和示例代碼

    Scala求和示例代碼

    這篇文章主要介紹了Scala求和示例代碼,需要的朋友可以參考下
    2019-06-06

最新評論

焦作市| 霍林郭勒市| 明溪县| 三河市| 吉水县| 巫山县| 平邑县| 武冈市| 华蓥市| 乌拉特后旗| 江陵县| 莱西市| 漠河县| 乌兰浩特市| 淄博市| 五原县| 大石桥市| 洛阳市| 丰城市| 红桥区| 定远县| 中阳县| 阿克| 本溪市| 兴海县| 临高县| 萝北县| 大新县| 石楼县| 安乡县| 石林| 融水| 博客| 中牟县| 平塘县| 巫溪县| 祁门县| 岳池县| 宝鸡市| 沂水县| 大埔县|