欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JavaClasses和Objects中的一些基礎(chǔ)知識(shí)點(diǎn)-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括來(lái)鳳網(wǎng)站建設(shè)、來(lái)鳳網(wǎng)站制作、來(lái)鳳網(wǎng)頁(yè)制作以及來(lái)鳳網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,來(lái)鳳網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到來(lái)鳳省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1、參數(shù)的值傳遞

2、垃圾回收機(jī)制

3、Java 中的 this 關(guān)鍵字

4、對(duì)類和成員的訪問(wèn)控制

5、static 關(guān)鍵字

6、靜態(tài)初始化塊和普通的實(shí)例代碼塊


1、參數(shù)的值傳遞

基本類型的參數(shù),如 int 或 double,都是按值傳遞給方法的。這意味著對(duì)參數(shù)值的任何更改都只存在于該方法的范圍內(nèi)。當(dāng)方法返回時(shí),參數(shù)就消失了,對(duì)它們的任何更改也都丟失了。這里有一個(gè)例子:// Java 中都是值傳遞

public class PassPrimitiveByValue {

    public static void main(String[] args) {
        int x = 3;
           
        // invoke passMethod() with x as argument
        passMethod(x);
           
        // print x to see if its value has changed
        System.out.println("After invoking passMethod, x = " + x);
    }
    // change parameter in passMethod()
    public static void passMethod(int p) {
        p = 10;
    }
}

當(dāng)你運(yùn)行這個(gè)程序時(shí),輸出是:

After invoking passMethod, x = 3
2、垃圾回收機(jī)制

Java 運(yùn)行時(shí)環(huán)境當(dāng)確定對(duì)象不再被使用時(shí),會(huì)刪除對(duì)象。這個(gè)過(guò)程稱為垃圾收集。

當(dāng)不再有對(duì)該對(duì)象的引用時(shí),該對(duì)象才有資格進(jìn)入到垃圾收集過(guò)程。通過(guò)將變量設(shè)置為特殊值 null,可以顯式地刪除該對(duì)象的引用。一個(gè)程序可以對(duì)同一個(gè)對(duì)象有多個(gè)引用;在對(duì)象符合垃圾收集條件之前,必須刪除對(duì)對(duì)象的所有引用。

Java 運(yùn)行時(shí)環(huán)境有一個(gè)垃圾收集器,它會(huì)定期釋放不再引用的對(duì)象所使用的內(nèi)存。垃圾收集器在確定時(shí)間合適時(shí)候會(huì)自動(dòng)執(zhí)行其工作。

3、Java 中的 this 關(guān)鍵字

在實(shí)例方法或構(gòu)造函數(shù)中,this 是對(duì)當(dāng)前對(duì)象的引用。可以使用 this 從實(shí)例方法或構(gòu)造函數(shù)中引用當(dāng)前對(duì)象的任何成員。

this 和字段一起使用

使用 this 關(guān)鍵字最常見(jiàn)原因是,方法或構(gòu)造函數(shù)參數(shù)遮蔽了字段。例如,Point 類是這樣編寫的:

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

但也可以寫成這樣:

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

構(gòu)造函數(shù)的每個(gè)參數(shù)都遮蔽了對(duì)象的一個(gè)字段——在構(gòu)造函數(shù)內(nèi)部,x是構(gòu)造函數(shù)第一個(gè)參數(shù)。要引用 Point 字段 x,構(gòu)造函數(shù)必須使用 this.x。

this 與構(gòu)造函數(shù)一起使用

在構(gòu)造函數(shù)內(nèi)部,還可以使用 this 關(guān)鍵字調(diào)用同一類中的另一個(gè)構(gòu)造函數(shù)。這種做法稱為顯式構(gòu)造函數(shù)調(diào)用。

public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}
4、對(duì)類和成員的訪問(wèn)控制

訪問(wèn)級(jí)別的修飾符可以決定其他類是否可以使用類中特定的字段或調(diào)用特定的方法。Java 有兩個(gè)級(jí)別的訪問(wèn)控制:

  • 類級(jí)別——public 或 package-private (沒(méi)有顯式修飾符)。
  • 成員級(jí)別——public, private, protected, or package-private (no explicit modifier)。

? 類:如果一個(gè)類用修飾符 public 聲明,在這種情況下,該類對(duì)任何地方的所有類都是可見(jiàn)的。如果一個(gè)類沒(méi)有修飾符(默認(rèn)的,也稱為 package-private),那么它只在它自己的包中可見(jiàn)。

? 成員:跟類聲明一樣,你可以使用 public 修飾符或不使用修飾符(package-private),這些修飾符與修飾類時(shí)一樣,都具有相同的含義。但是對(duì)于成員,還有兩個(gè)額外的訪問(wèn)修飾符:private 和 protected。private 修飾符指定該成員只能在其自己的類中進(jìn)行訪問(wèn)。protected 修飾符指定該成員只能在其自己的包中進(jìn)行訪問(wèn)(與package-private一樣),此外,還可以被其類在另一個(gè)包中的子類進(jìn)行訪問(wèn)。

下表顯示了每個(gè)修飾符允許對(duì)成員的訪問(wèn)權(quán)限:

ModifierClassPackageSubclassWorld
publicYYYY
protectedYYYN
no modifierYYNN
privateYNNN
5、static 關(guān)鍵字

static 修飾變量? ??

如果希望定義對(duì)所有對(duì)象都通用的變量,可以使用 static 修飾符進(jìn)行修飾。聲明中帶有 static 修飾符的字段稱為靜態(tài)字段或類變量。它們與類進(jìn)行關(guān)聯(lián),而不是與對(duì)象進(jìn)行關(guān)聯(lián)。類的每個(gè)實(shí)例共享一個(gè)類變量,該變量位于內(nèi)存中的一個(gè)固定位置。任何對(duì)象都可以改變類變量的值,但是也可以在不創(chuàng)建類對(duì)象的情況下操作類變量。

例如,你想要?jiǎng)?chuàng)建一些 Bicycle 對(duì)象,并為每個(gè)對(duì)象分配一個(gè)序列號(hào),第一個(gè)對(duì)象從1開始。這個(gè) ID 號(hào)對(duì)于每個(gè)對(duì)象都是唯一的,因此這是一個(gè)實(shí)例變量。與此同時(shí),還需要有一個(gè)字段用來(lái)跟蹤已經(jīng)創(chuàng)建了多少個(gè) Bicycle 對(duì)象,以便知道將什么 ID 分配給下一個(gè)對(duì)象。這樣的字段與任何單獨(dú)的對(duì)象都無(wú)關(guān),而是與整個(gè)類相關(guān)。因此,定義了一個(gè)類變量 numberOfBicycles,如下所示:

public class Bicycle {
        
    private int cadence;
    private int gear;
    private int speed;
        
    // add an instance variable for the object ID
    private int id;
    
    // add a class variable for the number of Bicycle objects instantiated
    private static int numberOfBicycles = 0;
        ...
}

類變量由類名本身引用,如:

Bicycle.numberOfBicycles // 推薦引用方式
// 雖然也可以通過(guò)類的實(shí)例進(jìn)行引用,但并不鼓勵(lì),因?yàn)檫@樣做并沒(méi)有明確表示它們是類變量。
myBike.numberOfBicycles // 不推薦引用方式

你可以在?Bicycle 構(gòu)造函數(shù)中設(shè)置實(shí)例變量 id,并增加 numberOfBicycles 類變量的值:

public class Bicycle {
        
    private int cadence;
    private int gear;
    private int speed;
    private int id;
    private static int numberOfBicycles = 0;
        
    public Bicycle(int startCadence, int startSpeed, int startGear){
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;

        // increment number of Bicycles and assign ID number
        id = ++numberOfBicycles;
    }

    // new method to return the ID instance variable
    public int getID() {
        return id;
    }
        ...
}

static 修飾方法

Java 支持靜態(tài)方法和靜態(tài)變量。靜態(tài)方法,在其聲明中用關(guān)鍵字?static 修飾,應(yīng)該用類名調(diào)用,而不需要?jiǎng)?chuàng)建類的實(shí)例,如:

// 雖然也可以通過(guò)類的實(shí)例進(jìn)行調(diào)用,但并不鼓勵(lì),因?yàn)檫@樣做并沒(méi)有明確表示它們是類方法。
ClassName.methodName(args)

類方法不能直接訪問(wèn)類中的實(shí)例變量或?qū)嵗椒ā鼈儽仨毷褂脤?duì)象引用。而且,類方法不能使用 this 關(guān)鍵字,因?yàn)闆](méi)有 this 的實(shí)例可以引用。

static 定義常量

static?修飾符與 final 修飾符一起用于定義常量。final 修飾符表示該字段的值不能更改。例如,下面的變量聲明定義了一個(gè)名為 PI 的常量,其值是 PI 的近似值(圓的周長(zhǎng)與直徑的比值):

static final double PI = 3.141592653589793;

以這種方式定義的常量不能再重新賦值,如果有程序這樣做,則會(huì)出現(xiàn)編譯時(shí)錯(cuò)誤。按照慣例,常量值的名稱用大寫字母拼寫。如果名稱由一個(gè)以上的單詞組成,單詞之間用下劃線進(jìn)行分隔。

6、靜態(tài)初始化塊和普通的實(shí)例代碼塊

靜態(tài)初始化塊

你通常可以在聲明中為字段提供一個(gè)初始值:

public class BedAndBreakfast {

    // initialize to 10
    public static int capacity = 10;

    // initialize to false
    private boolean full = false;
}

當(dāng)初始化值可用并且初始化可以放在一行上進(jìn)行時(shí),這種方法可以工作得很好。但是,這種初始化形式由于簡(jiǎn)單而具有局限性。如果初始化時(shí)需要一些額外的邏輯(例如,錯(cuò)誤處理或填充復(fù)雜數(shù)組的 for 循環(huán)),那么,上述簡(jiǎn)單的賦值是不夠的。實(shí)例變量可以在構(gòu)造函數(shù)中初始化,在構(gòu)造函數(shù)中可以使用錯(cuò)誤處理或其他邏輯。為了給類變量提供相同的功能,Java 提供了靜態(tài)初始化塊。// 一項(xiàng)技術(shù)出現(xiàn)的原因,總是因?yàn)榻鉀Q了對(duì)應(yīng)的問(wèn)題

靜態(tài)初始化塊是用大括號(hào) {} 括起來(lái)的普通代碼塊,前面有static關(guān)鍵字。這里有一個(gè)例子:

static {
    // whatever code is needed for initialization goes here
}

一個(gè)類可以有任意數(shù)量的靜態(tài)初始化塊,它們可以出現(xiàn)在類中的任何地方。運(yùn)行時(shí)系統(tǒng)會(huì)保證靜態(tài)初始化塊會(huì)按照它們?cè)谠创a中出現(xiàn)的順序被調(diào)用。// 一個(gè)靜態(tài)初始化塊只會(huì)被調(diào)用一次

有一個(gè)替代靜態(tài)塊的方法——你可以寫一個(gè)私有靜態(tài)方法:

class Whatever {
    public static varType myVar = initializeClassVariable();
        
    private static varType initializeClassVariable() {

        // initialization code goes here
    }
}

使用私有靜態(tài)方法的優(yōu)點(diǎn)是,如果需要重新初始化類變量,還可以重用它們。

普通的實(shí)例代碼塊

通常,會(huì)在構(gòu)造函數(shù)中放入初始化實(shí)例變量的代碼。使用構(gòu)造函數(shù)初始化實(shí)例變量有兩種選擇:初始化塊和 final 方法。實(shí)例變量的初始化塊看起來(lái)就像靜態(tài)初始化塊,但是沒(méi)有static關(guān)鍵字:

{
    // whatever code is needed for initialization goes here
}

Java 編譯器會(huì)將初始化代碼塊復(fù)制到每一個(gè)構(gòu)造函數(shù)中。因此,這種方法可用于在多個(gè)構(gòu)造函數(shù)之間共享代碼塊。????????

final 方法不能在子類中重寫。下面是一個(gè)使用 final 方法初始化實(shí)例變量的例子:

class Whatever {
    private varType myVar = initializeInstanceVariable();
        
    protected final varType initializeInstanceVariable() {

        // initialization code goes here
    }
}

如果子類可能希望能重用初始化方法,上述代碼會(huì)尤其有用。該方法是 final 的,因?yàn)樵趯?shí)例初始化期間調(diào)用非 final 方法會(huì)導(dǎo)致問(wèn)題。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:JavaClasses和Objects中的一些基礎(chǔ)知識(shí)點(diǎn)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://www.chinadenli.net/article8/dcedip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航軟件開發(fā)標(biāo)簽優(yōu)化服務(wù)器托管關(guān)鍵詞優(yōu)化用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)