国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

11、Java 變量作用域、構(gòu)造方法官方教程

這篇具有很好參考價(jià)值的文章主要介紹了11、Java 變量作用域、構(gòu)造方法官方教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、變量作用域

Java 中的變量有3種:
?? ① 全局變量:被定義在類中(成員變量
?? ② 局部變量:被定義在成員方法、代碼塊、靜態(tài)代碼塊中定義的變量
?? ③ 參數(shù):方法聲明中的變量


There are several kinds of variables(變量):

?? Member variables(成員變量) in a class:these are called fields(屬性)
?? Variables in a method or block of code(代碼塊):these are called local variables(局部變量)
?? Variables in method declarations(方法聲明):these are called parameters(參數(shù))


?? 全局變量(成員變量)作用域?yàn)椋赫麄€(gè)類體
?? 局部變量(除全局變量之外的變量)作用域?yàn)椋核诘拇a塊
?? 全局變量可以不賦值,直接使用(全局變量有默認(rèn)值)
?? 局部變量必須賦值后才能使用
?? 參數(shù)的值在方法被調(diào)用的時(shí)候才有

public class VariableDomain {
    // 全局變量
    private String name;

    {
        int age = 10; // 局部變量
    }

    static {
        double pai = 3.14; // 局部變量
    }

    // num1、description 參數(shù)
    public void test(int num1, String description) {
        String hobby = "睡覺"; // 局部變量
    }
}

?? 全局變量名和局部變量名可以一樣,訪問的時(shí)候遵循就近原則
?? 在同一作用域中(eg:同一成員方法中),不能有重名的局部變量
?? 同一類的同一代碼塊中的成員變量也不能重名

全局變量和局部變量重名的時(shí)候,訪問遵循就近原則:

public class VariableDomain {
    // 全局變量
    private String name = "張浩男";

    public static void main(String[] args) {
        VariableDomain domain = new VariableDomain();
        domain.test();
    }

    private void test() {
        String name = "莫松"; // 局部變量(可以和全局變量重名)
        // output: name = 莫松
        System.out.println("name = " + name);
    }
}

不同類的成員變量可以重名:
11、Java 變量作用域、構(gòu)造方法官方教程

?? 全局變量(成員變量)的生命周期長(zhǎng):【對(duì)象就像一個(gè)人??,成員變量就像一個(gè)人的手??】全局變量的生命伴隨著對(duì)象的存在而存在,便隨著對(duì)象的銷毀而銷毀
?? 局部變量生命周期短:與它所在的代碼塊共生
?? 全局變量可以在本類或其他類中使用
?? 局部變量只能在它所在類的指定方法中使用
?? 全局變量可以被修飾符修飾(eg:private、static、final)
?? 局部變量不能被修飾符修飾

二、構(gòu)造方法(Constructor)

(1) 官方教程解釋構(gòu)造方法

?? A class contains constructors that are invoked to create objects from the class blueprint. Constructor declarations look like method declarations:except that they use the name of the class and have no return type.
?? ① 中包含構(gòu)造方法(可通過調(diào)用構(gòu)造方法從一個(gè)類模板中創(chuàng)建一個(gè)對(duì)象)
?? ② 聲明構(gòu)造方法和聲明成員方法一樣,但也有區(qū)別(??構(gòu)造方法的方法名和類名一模一樣;??構(gòu)造方法沒有返回值類型)

下面是一個(gè)構(gòu)造方法的例子:

public class Student {
    private String name;
    private int age;
    private double score;

    // (1) 沒有返回類型
    // (2) 方法名和類名一致
    public Student(String stuName, int stuAge, double stuScore) {
        // 構(gòu)造方法的方法體中一般給成員變量賦值
        name = stuName;
        age = stuAge;
        score = stuScore;
    }
}

?? To create a new Student object called tom, a constructor is called by the new operator.
?? 要想創(chuàng)建一個(gè)名為 tom 的 Student 對(duì)象,可通過 new 運(yùn)算符調(diào)用構(gòu)造方法
new 運(yùn)算符調(diào)用構(gòu)造方法,創(chuàng)建 Student 對(duì)象:

Student zhn = new Student("張浩男", 12, 99.5); 

?? new Student("張浩男", 12, 99.5): creates space in memory(內(nèi)存空間) for the object and initializes its fields
?? new Student("張浩男", 12, 99.5): 該代碼在內(nèi)存中為對(duì)象開辟了內(nèi)存空間,并且初始化了成員變量的值

?? Although Student only has one constructor, it could have others, including a no-argument constructor(無參構(gòu)造方法):

    /**
     * Student 類的無參構(gòu)造方法
     */
    public Student() {
        name = "慶醫(yī)";
        age = 8;
        score = 100;
    }

?? 和成員方法一樣,構(gòu)造方法也是可以重載(Override)的:方法名和類名一致,參數(shù)列表各不相同


?? Both constructors could have been declared in Student because they have different argument lists(參數(shù)列表). As with methods(與方法一樣), the Java platform differentiates(區(qū)分) constructors on the basis of the number of arguments in the list and their types. You cannot write two constructors that have the same number and type of arguments for the same class, because the platform would not be able to tell(區(qū)分) them apart. Doing so causes a compile-time error.
?? 兩個(gè)構(gòu)造方法(有參構(gòu)造方法和無參構(gòu)造方法)都可在 Student 類中被聲明,因?yàn)樗鼈冇胁煌膮?shù)列表。與成員方法一樣,Java 平臺(tái)可通過參數(shù)數(shù)量和參數(shù)類型來區(qū)分構(gòu)造方法。在同一個(gè)類中,你不能寫兩個(gè)擁有相同參數(shù)數(shù)量和參數(shù)類型的構(gòu)造方法,因?yàn)?Java 平臺(tái)無法區(qū)分。寫兩個(gè)擁有相同參數(shù)數(shù)量和參數(shù)類型的構(gòu)造方法將會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤。
11、Java 變量作用域、構(gòu)造方法官方教程

?? You don’t have to provide any constructors for your class, but you must be careful when doing this. The compiler(編譯器) automatically provides a no-argument, default constructor(默認(rèn)構(gòu)造方法) for any class without constructors. This default constructor will call the no-argument constructor of the superclass(超類). In this situation, the compiler will complain(抱怨、埋怨、發(fā)惱騷) if the superclass(超類) doesn’t have a no-argument constructor so you must verify(驗(yàn)證) that it does. If your class has no explicit(明確的、顯式的) superclass, then it has an implicit (隱式的、含蓄的)superclass of Object, which does have a no-argument constructor.
?? 你并不是必須得給你的類提供一個(gè)構(gòu)造方法(你可以不同你的類提供任何構(gòu)造方法)。若不給類提供任何構(gòu)造方法的話,你必須當(dāng)心一點(diǎn)。編譯器會(huì)自動(dòng)提供一個(gè)無參的默認(rèn)構(gòu)造方法,這個(gè)默認(rèn)的無參構(gòu)造方法是提供給那些沒有任何構(gòu)造方法的類的。這個(gè)默認(rèn)的無參構(gòu)造方法將會(huì)調(diào)用超類的無參構(gòu)造方法,所以必須確保超類擁有無參構(gòu)造方法,否則編譯器會(huì)發(fā)惱騷(報(bào)錯(cuò)的)??。如果你的類沒有明確的超類,你的類會(huì)有一個(gè)隱式的超類(Object),Object 類是所有類的超類(是 Java 平臺(tái)提供的),Object 類百分百擁有一個(gè)無參構(gòu)造方法。

?? You can use access modifiers(訪問修飾符) in a constructor’s declaration to control which other classes can call the constructor.
?? 你可以在聲明構(gòu)造方法的使用使用訪問修飾符(public、protected、private),用以控制哪些其他類可以調(diào)用這個(gè)構(gòu)造方法。

?? If another class cannot call a Student constructor, it cannot directly(直接地) create Student objects.
?? 如果其他類不能調(diào)用 Student 類的構(gòu)造方法,其他類就無法直接地創(chuàng)建 Student 對(duì)象。

(2) 構(gòu)造方法概念

?? 構(gòu)造方法:也叫構(gòu)造器,用于更方便地創(chuàng)建一個(gè)對(duì)象
?? 方法名必須和類名一模一樣
?? 沒有返回值類型
?? 可以重載(方法名一樣,方法簽名不一樣)

構(gòu)造方法案例:

public class Handsome {
    private int age;
    private double weight;

    public Handsome() {

    }

    public Handsome(int age) {
        this.age = age;
    }

    public Handsome(int age, double weight) {
        this.age = age;
        this.weight = weight;
    }
}

使用構(gòu)造方法創(chuàng)建 Handsome 對(duì)象:

	// 可通過3種構(gòu)造方法創(chuàng)建 Handsome 對(duì)象
	Handsome hs1 = new Handsome();
	Handsome hs2 = new Handsome(17);
	Handsome hs3 = new Handsome(17, 123.5);

(3) this 的本質(zhì) ☆☆☆☆☆

?? this指向當(dāng)前對(duì)象的引用

this 的用途:
?? ① 訪問當(dāng)前類中定義的成員變量
?? ② 調(diào)用當(dāng)前類中定義的方法(包括構(gòu)造方法)

public class Computer {
    private String brand;
    private double price;

    public Computer(String brand) {
        // this 作用:調(diào)用當(dāng)前類中定義的方法(包括構(gòu)造方法)
        this(brand, 0.0);
    }

    public Computer(String brand, double price) {
        // this 作用:訪問當(dāng)前類中定義的成員變量
        this.brand = brand;
        this.price = price;
    }
}

?? 在類中直接寫成員變量、直接調(diào)用成員方法,默認(rèn)都是訪問和調(diào)用當(dāng)前對(duì)象的

public class Cat {
    public int age;

    public void eat() {
        // 等價(jià)于:System.out.println(this.age + "eat()");
        System.out.println(age + "eat()");
    }

    public void run() {
        // 等價(jià)于:this.eat();
        eat();
    }
}

?? this 的本質(zhì)是一個(gè)隱藏的、位置最靠前的方法參數(shù)。(面向?qū)ο蟮恼Z(yǔ)言的 this 都是這樣的)
11、Java 變量作用域、構(gòu)造方法官方教程


?? 只能在構(gòu)造方法中用 this 調(diào)用其他構(gòu)造方法
?? 如果在構(gòu)造方法 A 中調(diào)用了其他構(gòu)造方法,調(diào)用構(gòu)造方法的語(yǔ)句必須是構(gòu)造方法 A 中的第一條語(yǔ)句
11、Java 變量作用域、構(gòu)造方法官方教程


?? 默認(rèn)構(gòu)造方法(Default Constructor):如果一個(gè)類沒有自定義構(gòu)造方法,編譯器會(huì)自動(dòng)為它提供無參數(shù)的默認(rèn)構(gòu)造方法
?? 一旦自定義了構(gòu)造方法,默認(rèn)構(gòu)造方法就不再存在

三、對(duì)象創(chuàng)建流程分析

public class Person {
    private int age = 17;
    private String name;

    public Person(String name, int age) {
        this.age = age;
        this.name = name;
    } 
}
	Person zhn = new Person("張浩男", 18);

對(duì)象創(chuàng)建流程:
?? ① 方法區(qū)加載一次類信息
?? ② 在堆中分配對(duì)象的內(nèi)存空間
?? ③ 完成對(duì)象屬性初始化(屬性默認(rèn)初始化;顯示初始化;構(gòu)造器初始化)
?? ④ 對(duì)象在堆中的內(nèi)存地址賦值給 zhn(zhn 指向?qū)ο笤诙阎械牡刂罚?br>11、Java 變量作用域、構(gòu)造方法官方教程

Bye-Bye 如發(fā)現(xiàn)錯(cuò)誤,請(qǐng)不吝賜教!文章來源地址http://www.zghlxwxcb.cn/news/detail-402020.html

到了這里,關(guān)于11、Java 變量作用域、構(gòu)造方法官方教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 面向?qū)ο蟆境蓡T變量與局部變量、方法聲明與作用】

    面向?qū)ο蟆境蓡T變量與局部變量、方法聲明與作用】

    Java中的成員變量是指 類中聲明的變量 ,也稱為實(shí)例變量或?qū)傩浴K鼈兣c方法一樣屬于類的成員,不同之處在于,它們存儲(chǔ)在對(duì)象(堆)中而不是棧中,并且每個(gè)對(duì)象都有自己的一組值。 成員變量可以用來描述一個(gè)對(duì)象的狀態(tài),例如人的年齡、學(xué)生的姓名等。它們可以具有pub

    2024年02月10日
    瀏覽(31)
  • Solidity 小白教程:11. 構(gòu)造函數(shù)和修飾器

    這一講,我們將用合約權(quán)限控制( Ownable )的例子介紹 solidity 語(yǔ)言中構(gòu)造函數(shù)( constructor )和獨(dú)有的修飾器( modifier )。 構(gòu)造函數(shù)( constructor )是一種特殊的函數(shù),每個(gè)合約可以定義一個(gè),并在部署合約的時(shí)候自動(dòng)運(yùn)行一次。它可以用來初始化合約的一些參數(shù),例如初始

    2024年04月17日
    瀏覽(17)
  • 【JAVA】變量的作用域與生存周期

    【JAVA】變量的作用域與生存周期

    個(gè)人主頁(yè):【??個(gè)人主頁(yè)】 系列專欄:【??初識(shí)JAVA】 變量 ,我們學(xué)習(xí)過程中逃不掉的知識(shí),無論在哪種語(yǔ)言中我們都需要學(xué)會(huì)去合理的運(yùn)用它,今天我們就來詳細(xì)的講講變量的運(yùn)用. 通常來說,一段程序代碼中所用到的名字并不總是有效可用的,而限定這個(gè)名字的可用性

    2024年02月12日
    瀏覽(21)
  • 【C語(yǔ)言趣味教程】(4) 變量:代碼注釋 | 變量的聲明 | 初始化與賦值 | 作用域與生命周期 | 局部變量與全局變量

    【C語(yǔ)言趣味教程】(4) 變量:代碼注釋 | 變量的聲明 | 初始化與賦值 | 作用域與生命周期 | 局部變量與全局變量

    ? ?? 《C語(yǔ)言趣味教程》?? 猛戳訂閱?。?! 0x00 引入:注釋的作用 \\\"程序員最討厭兩種人:一種是不寫注釋的人,一種是讓我寫注釋的人。\\\" 相信大家對(duì)注釋早已有所耳聞,對(duì)于注釋,C 語(yǔ)言有兩種注釋風(fēng)格,我們下面會(huì)逐個(gè)講解。 ? 但在這之前,我們先來了解了解注釋的作

    2024年02月15日
    瀏覽(27)
  • 定義一個(gè)圓類Circle,成員變量:半徑 radius;成員方法:構(gòu)造方法、get和set半徑的方法、計(jì)算面積和周長(zhǎng)的方法。

    (1)定義一個(gè)圓類Circle,成員變量:半徑 radius;成員方法:構(gòu)造方法、get和set半徑的方法、? ? ? ? 計(jì)算面積和周長(zhǎng)的方法。定義圓柱和圓錐類,定義相應(yīng)的變量成員和成員方法。使用以上類編? ? ? ? ?程,輸出圓的面積和圓柱、圓錐的體積。

    2024年02月12日
    瀏覽(30)
  • 軟考A計(jì)劃-系統(tǒng)架構(gòu)師-官方考試指定教程-(11/15)

    軟考A計(jì)劃-系統(tǒng)架構(gòu)師-官方考試指定教程-(11/15)

    點(diǎn)擊跳轉(zhuǎn)專欄=Unity3D特效百例 點(diǎn)擊跳轉(zhuǎn)專欄=案例項(xiàng)目實(shí)戰(zhàn)源碼 點(diǎn)擊跳轉(zhuǎn)專欄=游戲腳本-輔助自動(dòng)化 點(diǎn)擊跳轉(zhuǎn)專欄=Android控件全解手冊(cè) 點(diǎn)擊跳轉(zhuǎn)專欄=Scratch編程案例 專注于 Android/Unity 和各種游戲開發(fā)技巧,以及 各種資源分享 (網(wǎng)站、工具、素材、源碼、游戲等) 有什么需要

    2024年02月08日
    瀏覽(12)
  • 【Java基礎(chǔ)教程】(七)面向?qū)ο笃?· 第一講:上干貨!面向?qū)ο蟮奶匦?、類與對(duì)象、內(nèi)存結(jié)構(gòu)引用分析、垃圾收集器 GC處理、封裝性詳解、構(gòu)造方法、匿名對(duì)象、簡(jiǎn)單 Java 類~

    【Java基礎(chǔ)教程】(七)面向?qū)ο笃?· 第一講:上干貨!面向?qū)ο蟮奶匦浴㈩惻c對(duì)象、內(nèi)存結(jié)構(gòu)引用分析、垃圾收集器 GC處理、封裝性詳解、構(gòu)造方法、匿名對(duì)象、簡(jiǎn)單 Java 類~

    程序是將數(shù)據(jù)和邏輯封裝在一起的代碼段。在Java中,方法是常用的代碼段封裝方式。然而,在Java中,方法必須存在于一個(gè)類中才能使用。因此,我們將進(jìn)入本章的核心內(nèi)容——面向?qū)ο缶幊獭?利用面向?qū)ο笤O(shè)計(jì)的程序可以實(shí)現(xiàn)代碼的重用,并方便開發(fā)者進(jìn)行項(xiàng)目維護(hù)。面向

    2024年02月13日
    瀏覽(25)
  • 【Java編程教程】詳解Java 構(gòu)造函數(shù)

    在Java中,構(gòu)造函數(shù)是類似于方法的代碼塊。它在創(chuàng)建類的實(shí)例時(shí)被調(diào)用。在調(diào)用構(gòu)造函數(shù)時(shí),對(duì)象的內(nèi)存是在內(nèi)存中分配的。 它是一種特殊類型的方法,用于初始化對(duì)象。 每次使用 new() 創(chuàng)建對(duì)象時(shí),至少會(huì)調(diào)用一個(gè)構(gòu)造函數(shù)。 如果類中沒有可用的構(gòu)造函數(shù),它會(huì)調(diào)

    2024年02月06日
    瀏覽(29)
  • java的構(gòu)造方法

    java的構(gòu)造方法

    ? ? 構(gòu)造方法是 Java中最重要的方法,也是 Java語(yǔ)言中最基本的方法,它直接影響程序的結(jié)構(gòu)。java中不允許重復(fù)使用構(gòu)造方法,但可以重復(fù)使用構(gòu)造函數(shù)。 1. Java中只有構(gòu)造函數(shù)可以使用被調(diào)用方提供的參數(shù)(如: int)作為參數(shù),如果參數(shù)類型不確定,可以使用另一個(gè)構(gòu)造函

    2024年02月01日
    瀏覽(13)
  • 詳解JAVA中的構(gòu)造方法

    詳解JAVA中的構(gòu)造方法

    目錄 一、構(gòu)造方法的概念 二、構(gòu)造方法的特 性 ????????構(gòu)造方法(也稱為構(gòu)造器)是一個(gè)特殊的成員方法, 名字必須與類名相同,在創(chuàng)建對(duì)象時(shí)由編譯器自動(dòng)調(diào)用,并且在整個(gè)對(duì)象的生命周期內(nèi)只調(diào)用一次。 代碼演示: 運(yùn)行結(jié)果 : 注意: ????????? 構(gòu)造方法的作

    2023年04月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包