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

Java中的方法、常量、變量、參數(shù)用例詳解

 更新時間:2024年01月22日 09:19:55   作者:JavaBuild  
在JVM的運轉(zhuǎn)中,承載的是數(shù)據(jù),而數(shù)據(jù)的一種變現(xiàn)形式就是“量”,量分為:常量與變量,我們在數(shù)學(xué)和物理學(xué)中已經(jīng)接觸過變量的概念了,在Java中的變量就是在程序運行過程中可以改變其值的量,這篇文章主要介紹了Java中的方法、常量、變量、參數(shù),需要的朋友可以參考下

在上一篇文章:一文搞清楚Java中的包、類、接口中我們講了Java中的包、類和接口,今天繼續(xù)將剩下的方法、常量、變量以及參數(shù)梳理完。

Java中的變量與常量

在JVM的運轉(zhuǎn)中,承載的是數(shù)據(jù),而數(shù)據(jù)的一種變現(xiàn)形式就是“量”,量分為:常量與變量,我們在數(shù)學(xué)和物理學(xué)中已經(jīng)接觸過變量的概念了,在Java中的變量就是在程序運行過程中可以改變其值的量。

常量

與變量相對應(yīng)的是常量,所謂常量,即在作用域內(nèi)保持不變的值,一般用final關(guān)鍵字進行修飾,通常分為全局常量、類內(nèi)常量、局部常量。
【程序用例】

public class Person {
    //全局常量
    public static final String SEX = "男";
    //類內(nèi)常量
    private static final String BIRTHPLACE ="安徽";
    public void method1(String str){
        //局部常量-方法常量
        final String LANGUAGE = "漢語";
    }
    public void method2(final int age){
        //局部常量-參數(shù)常量,不可改,這段代碼會編譯報錯
        age = 20;
    }
}

變量

變量同樣分為局部變量、成員變量和靜態(tài)變量
【程序用例】

public class Person {
    //成員變量
    //在類內(nèi)部但在方法體外聲明的變量稱為成員變量,或者實例變量,或者字段。
    //之所以稱為實例變量,是因為該變量只能通過類的實例(對象)來訪問。
    int data1 = 3;
    //靜態(tài)變量
    //通過 static 關(guān)鍵字聲明的變量被稱為靜態(tài)變量(類變量),
    //它可以直接被類訪問
    static int data2 = 4;
    public int sum(){
        //局部變量
        //在方法體內(nèi)聲明的變量被稱為局部變量,該變量只能在該方法內(nèi)使用,
        //類中的其他方法并不知道該變量。
        int a = 1;
        int b = 2;
        return a+b;
    }
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.data1 == person.sum());
        System.out.println(Person.data2 == person.sum());
    }
}

【變量使用時注意事項】

局部變量
局部變量聲明在方法、構(gòu)造方法或者語句塊中。
局部變量在方法、構(gòu)造方法、或者語句塊被執(zhí)行的時候創(chuàng)建,當(dāng)它們執(zhí)行完成后,將會被銷毀。
訪問修飾符不能用于局部變量。
局部變量只在聲明它的方法、構(gòu)造方法或者語句塊中可見。
局部變量是在棧上分配的。
局部變量沒有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。

成員變量
成員變量聲明在一個類中,但在方法、構(gòu)造方法和語句塊之外。 當(dāng)一個對象被實例化之后,每個成員變量的值就跟著確定。
成員變量在對象創(chuàng)建的時候創(chuàng)建,在對象被銷毀的時候銷毀。
成員變量的值應(yīng)該至少被一個方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息。 成員變量可以聲明在使用前或者使用后。
訪問修飾符可以修飾成員變量。
成員變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把成員變量設(shè)為私有。通過使用訪問修飾符可以使成員變量對子類可見;成員變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是
0,布爾型變量的默認(rèn)值是 false,引用類型變量的默認(rèn)值是 null。變量的值可以在聲明時指定,也可以在構(gòu)造方法中指定。

靜態(tài)變量
靜態(tài)變量在類中以 static 關(guān)鍵字聲明,須在方法、構(gòu)造方法和語句塊之外。
無論一個類創(chuàng)建了多少個對象,類只擁有靜態(tài)變量的一份拷貝。 靜態(tài)變量除了被聲明為常量外很少使用。 靜態(tài)變量儲存在靜態(tài)存儲區(qū)。
靜態(tài)變量在程序開始時創(chuàng)建,在程序結(jié)束時銷毀。 與成員變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為 public 類型。
靜態(tài)變量的默認(rèn)值和實例變量相似。 靜態(tài)變量還可以在靜態(tài)語句塊中初始化

Java中的方法

何為方法?我的理解是:方法是Java中對邏輯行為的一種程序?qū)崿F(xiàn),通過方法的調(diào)用去實現(xiàn)我們想讓對象所擁有的行為,比如一個對象的增刪改查,只需要創(chuàng)建相應(yīng)的方法即可!

方法的聲明

在方法聲明中,最重要的就是方法名(采用小駝峰命名法)與參數(shù),這兩者構(gòu)成的方法的簽名,是方法重載的判斷依舊,除此之外,在聲明方法的時候,還會設(shè)置訪問權(quán)限、是否靜態(tài)、返回值類型等。結(jié)構(gòu)如下圖:

實例方法

在類中聲明,無需static、abstract等關(guān)鍵字修飾,創(chuàng)建類對象,通過對象的引用所調(diào)用的方法為實例方法,類中最為常見的一種方法類型。上代碼!

public class Test {
    public static void main(String[] args) {
        Test sum = new Test();
        System.out.println(sum.add(1,2));
    }
    //實例方法,求兩數(shù)之和
    public int add(int a, int b) {
        return a + b;
    }
}

靜態(tài)方法

若方法的聲明中加上了static關(guān)鍵字,靜態(tài)方法是屬于類的,而不是屬于類創(chuàng)建的對象或?qū)嵗?,故在調(diào)用時無需通過對象實例。

public class Test {
    public static void main(String[] args) {
        System.out.println(sub(2,1));
    }
    public static int sub(int a,int b){
        return a - b;
    }
}

【注意事項】

1、靜態(tài)方法只能訪問靜態(tài)成員
2、調(diào)用靜態(tài)方法時可能對象并沒有被初始化,此時非靜態(tài)變量還未初始化
3、非靜態(tài)方法的調(diào)用和非靜態(tài)成員變量的訪問要先創(chuàng)建對象

抽象方法

當(dāng)一個方法被關(guān)鍵字abstract修飾后,且沒有方法體,那它就成為了一個抽象方法,抽象方法往往出現(xiàn)在抽象類和接口中。

/**
 * @author JavaBUild
 */
abstract class AbstractDemo {
    abstract void display();
}

【注意事項】

1、抽象類中不一定必須要有抽象方法,但是有抽象方法的類必須是抽象類
2、若一個類繼承了抽象類,則必須實現(xiàn)抽象類中的抽象方法!
3、抽象類不能被實例化
4、抽象方法不能被聲明為靜態(tài)
5、抽象方法不能用 private 修飾
6、抽象方法不能用 final 修飾

native方法

我們在講Java的Object類時,已經(jīng)接觸過Java中的native方法了,它們用native關(guān)鍵字修飾,用C/C++語言實現(xiàn),聲明時native關(guān)鍵字必須在返回值前,不能用abstract修飾、沒有方法體,甚至沒有大括號!

public final native Class<?> getClass();
public native int hashCode();
protected native Object clone() throws CloneNotSupportedException;

這類方法存在的意義是作為Java標(biāo)準(zhǔn)類庫的一種擴展,或者兼容其他語言寫好的且更好用的類庫,或者提升程序執(zhí)行效率。

構(gòu)造方法

除了以上那些方法外,Java中還有一種特殊的方法,名為構(gòu)造方法,用以在對象初始化工作,Java 有兩種類型的構(gòu)造方法:無參構(gòu)造方法和有參構(gòu)造方法。
當(dāng)我們在一個類中不寫任何構(gòu)造方法時,編譯器會默認(rèn)一個無參構(gòu)造方法,只不過這個方法是缺省的,顯示不可見。
構(gòu)造方法的聲明規(guī)范

構(gòu)造方法的名字必須和類名一樣;
構(gòu)造方法沒有返回類型,包括 void;
構(gòu)造方法不能是抽象的(abstract)、靜態(tài)的(static)、最終的(final)、同步的(synchronized)。

代碼示例

public class Test {
   private String name;
   private int age;
    //默認(rèn)構(gòu)造方法,無參構(gòu)造
    public Test() {
    }
    //有參構(gòu)造方法
    public Test(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public static void main(String[] args) {
        //通過無參構(gòu)造創(chuàng)建的對象,會有默認(rèn)值
        Test test1 = new Test();
        //通過有參構(gòu)造方法構(gòu)造的對象,在初始化時便進行了賦值
        Test test2 = new Test("JavaBuild", 18);
        System.out.println(test1.name+":"+test1.age);
        System.out.println(test2.name+":"+test2.age);
    }
}

輸出:

null:0
JavaBuild:18

Java中參數(shù)

上面構(gòu)造方法中提及了有參構(gòu)造和無參構(gòu)造,那么現(xiàn)在就好好聊一聊這個參數(shù),參數(shù)應(yīng)用于方法之中,作為方法運轉(zhuǎn)的條件和參考,當(dāng)然這僅限于有參數(shù)的方法,方法中的參數(shù)分形參和實參,形參是在方法的定義階段,而實參則是在方法的調(diào)用階段,參數(shù)個數(shù)不限,類型不限,可以是基本數(shù)據(jù)類型,也可以是引用類型。

可變參數(shù)在jdk5中為了解決反射機制和printf中的問題引入了可變參數(shù)概念,顧名思義就是參數(shù)個數(shù)不確定的場景。定義方式:"參數(shù)類型...";

代碼示例

public class Test {
    public static void main(String[] args) {
      countLength("a");
      countLength("a","b");
      countLength("a","b","c");
    }
    public static void countLength(String... args){
        System.out.println(args.length);
    }
}

【注意事項】

1、每個方法最多只有一個可變參數(shù)
2、可變參數(shù)必須是方法的最后一個參數(shù)
3、無法僅通過改變可變參數(shù)的類型,來重載方法
4、通過對 class 文件反編譯可以發(fā)現(xiàn),可變參數(shù)被編譯器處理成了數(shù)組

到此這篇關(guān)于Java中的方法、常量、變量、參數(shù)的文章就介紹到這了,更多相關(guān)Java中的方法、常量、變量、參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Selenium實現(xiàn)修改打開頁面窗口大小

    Java?Selenium實現(xiàn)修改打開頁面窗口大小

    Selenium是一個強大的自動化測試工具,支持多種編程語言和瀏覽器,本文將詳細介紹如何使用Java?Selenium來修改打開頁面窗口的大小,需要的可以參考下
    2025-01-01
  • Mybatis-Plus 實戰(zhàn)使用與最佳實踐

    Mybatis-Plus 實戰(zhàn)使用與最佳實踐

    Mybatis作為優(yōu)秀的持久層框架,以其靈活性和可控性贏得了廣大開發(fā)者的青睞,本文將從實戰(zhàn)角度出發(fā),深入解析Mybatis-Plus的核心功能和最佳實踐,幫助開發(fā)者快速掌握這一強大的開發(fā)工具,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    我們經(jīng)常會遇到一下問題:Spring對靜態(tài)變量的注入為空、在構(gòu)造函數(shù)中使用Spring容器中的Bean對象,得到的結(jié)果為空。不要擔(dān)心,本文將為大家介紹如何解決這些問題,跟隨小編來看看吧
    2021-11-11
  • Spring中的循環(huán)依賴問題

    Spring中的循環(huán)依賴問題

    在Spring框架中,循環(huán)依賴是指兩個或多個Bean相互依賴,這導(dǎo)致在Bean的創(chuàng)建過程中出現(xiàn)依賴死鎖,為了解決這一問題,Spring引入了三級緩存機制,包括singletonObjects、earlySingletonObjects和singletonFactories
    2024-09-09
  • Spring Boot環(huán)境下Mybatis Plus的快速應(yīng)用操作

    Spring Boot環(huán)境下Mybatis Plus的快速應(yīng)用操作

    這篇文章主要介紹了Spring Boot環(huán)境下Mybatis Plus的快速應(yīng)用操作,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java實現(xiàn)一鍵生成表controller,service,mapper文件

    Java實現(xiàn)一鍵生成表controller,service,mapper文件

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)一鍵生成表controller,service,mapper文件,文中的示例代碼講解詳細,需要的可以收藏一下
    2023-05-05
  • Ehcache簡介_動力節(jié)點Java學(xué)院整理

    Ehcache簡介_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進行整合,可以靈活的對方法的返回結(jié)果對象進行緩存
    2017-07-07
  • RabbitMQ啟動失敗問題及解決過程

    RabbitMQ啟動失敗問題及解決過程

    這段文章描述了使用`systemctl start rabbitmq-server.service`啟動RabbitMQ時遇到的問題,通過刪除特定文件和修正配置文件中的錯誤逗號,最終成功啟動服務(wù),關(guān)鍵詞包括:RabbitMQ啟動、配置文件修正、服務(wù)啟動
    2026-05-05
  • Java兩整數(shù)相除向上取整的方式詳解(Math.ceil())

    Java兩整數(shù)相除向上取整的方式詳解(Math.ceil())

    在調(diào)外部接口獲取列表數(shù)據(jù)時,需要判斷是否已經(jīng)取完了所有的值,因此需要用到向上取整,下面這篇文章主要給大家介紹了關(guān)于Java兩整數(shù)相除向上取整的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • springboot+rabbitmq實現(xiàn)智能家居實例詳解

    springboot+rabbitmq實現(xiàn)智能家居實例詳解

    這篇文章主要為大家介紹了springboot+rabbitmq實現(xiàn)智能家居的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論

无棣县| 肇源县| 酒泉市| 余江县| 广南县| 东乌珠穆沁旗| 临猗县| 金门县| 永川市| 霍邱县| 九寨沟县| 吉林市| 运城市| 巴林左旗| 共和县| 桐城市| 法库县| 江都市| 清新县| 崇文区| 交口县| 北京市| 甘孜| 灵石县| 恭城| 宁明县| 麻栗坡县| 黄陵县| 兴和县| 同江市| 正镶白旗| 额尔古纳市| 于田县| 乌兰察布市| 娱乐| 灵丘县| 呼玛县| 宁夏| 剑阁县| 菏泽市| 交城县|