日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法

發布時間:2023/12/3 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 變量相關概念
    • 變量/常量
    • 類變量/靜態變量
    • 成員變量/實例變量
    • 類屬性/實例屬性/對象屬性
    • 什么是 field
  • 成員變量和類變量的區別
    • 兩個變量的生命周期不同
    • 訪問方式不同
    • 數據存儲位置不同
  • 方法相關概念
  • 示例代碼
  • 判斷題

變量相關概念

變量/常量

所謂變量就是指可以改變的數據量,即數值可以改變。
所謂常量就是指不可以改變的數據量,即數值不可以改變,可以稱為“常數”,也可以稱為“定數”,與之相反的是變量。

類變量/靜態變量

類變量是由 static 修飾的變量,也稱為靜態變量,可以通過類名訪問,也可以通過實例對象來訪問,通過對象訪問也只是編碼階段這樣寫而已,在編譯的時候會被自動轉換成“類名稱.變量名”的語法格式。

靜態變量也叫字段(field)。

成員變量/實例變量

非 static 修飾的變量都叫成員變量,也叫實例變量,也可以叫對象變量(很少這樣叫),只能通過“實例對象”訪問。

成員變量也叫字段(field)。

類屬性/實例屬性/對象屬性

類屬性就是實例屬性,也叫對象屬性,是根據 get 方法得來的。

類屬性的定義規則:get 方法名,去掉 get 后,將剩余部分首字母小寫得到的字符串就是這個類的屬性。

例如類 Person 含有方法 getName(),那么 name 就是該類的屬性了。

下面例子中,屬性名和成員變量名相同,都是 n:

public class Test {private String n; // n是成員變量public String getN() { // n是類的屬性return n;}public void setN(String n) {this.n = n;} }

注:屬性名和成員變量名通常情況下相同,這符合 JavaBean 規范。

下面例子中,屬性是 name,成員變量 n 不是類的屬性:

public class Test {private String n; // n不是類的屬性public String getName() { // name是類的屬性return n;}public void setName(String n) {this.n = n;} }

注:上述例子的寫法不推薦,不符合 JavaBean 的規范,但是我們要理解。

下面的例子中,我們稱 username 為只讀屬性,因為只能通過 get 方法訪問,沒有提供寫入的方法:

public class Test {private String userName; // userName是成員變量public String getUserName(){ // userName是類的屬性return "aaa"; } }

什么是 field

類中方法外聲明的所有變量(靜態變量、成員變量、常量)就是 field,中文譯為“字段”或“域”,通常稱為“字段”。方法的參數、方法內的局部變量不可以稱為 field。

class A {private int a; // private field 私有域protected double b; // protected field 保護域public String c; // public field 公共域A d; // default access field 默認訪問域public static Object e; // public static field 公共靜態域 }

成員變量和類變量的區別

兩個變量的生命周期不同

  • 成員變量隨著實例的創建而存在,隨著實例對象的回收而消失

  • 靜態變量隨著類的加載而存在,隨著類的消失而消失

  • 訪問方式不同

  • 成員變量只能通過對象來訪問

  • 靜態變量可以通過對象來訪問,也可以通過類名來訪問,通過對象訪問只是在編碼階段,編譯期會轉換成“類名.變量名”的語法格式

  • 數據存儲位置不同

  • 成員變量存儲在堆內存的對象中,所以也叫對象的特有數據

  • 靜態變量存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據

  • 方法相關概念

    非靜態的方法都叫成員方法,必須通過對象才能調用。包含非靜態的私有方法、公共方法、保護方法、默認訪問權限的方法。私有方法比較特殊,只能通過本類的方法進行調用,但是也必須通過對象才能調用。

    靜態的方法也叫類方法,只能通過類名進行調用,即便編碼時通過對象調用靜態方法,編譯時也會轉換成“類名稱.靜態方法名”的語法格式。

    示例代碼

    package priv.lwx.javaprac.variable; public class User {public static final String SKIN_COLOUR = "yellow"; // 這是常量,因為值不變;也叫類變量,也叫靜態變量,使用static修飾,僅有一份,所有實例共享,也叫字段(field),不可以稱為類屬性,因為沒有對應的get方法;不可以稱為成員變量,因為是通過類名訪問,不需要通過對象訪問,和對象無關public static String nationality = "china"; // 這叫類變量,也叫靜態變量,也叫字段(field),不是成員變量,也不是類屬性private String name; // 只能通過對象訪問,所以是成員變量,也叫實例變量,也叫字段(field),但是比較特殊,因為是私有的,所以只能由本來的方法才能訪問,本類的方法也是通過對象才能訪問public String getName() { // name是類的屬性,也可以稱為實例屬性、對象屬性,在Java中,類的屬性不是看變量,而是看get方法return name;}public void setName(String name) {this.name = name;} }

    判斷題

    1.static 修飾的變量叫類變量,也就是類屬性
    答:錯。不是類屬性,屬性看 get 方法

    2.非 static 修飾的叫成員變量,也叫實例變量,也叫實例屬性
    答:錯。不是實例屬性,屬性看 get 方法

    3.類屬性就是實例屬性
    答:對

    4.有人說 static 修飾的變量才叫 field,有人說方法內聲明的變量不能叫 field,參數也不能叫 field
    答:錯。類中方法外面聲明的所有變量叫 field

    5.類屬性就是實例屬性
    答:對

    6.實例屬性就是類屬性
    答:對

    7.實例屬性就是類的成員變量
    答:錯,因為實例屬性是根據 get 方法得來的,和類聲明的變量無關

    8.實例屬性就是類變量或者實例變量(也叫成員變量)
    答:錯,因為實例屬性是根據 get 方法得來的,和變量無關。有 static 修飾的變量叫類變量;沒有 static 修飾的變量叫實例變量。

    9.Java 類屬性是如何定義的
    答:類屬性的定義規則是:將 get 方法名去掉 get 后,將剩余部分首字母小寫得到的字符串就是這個類的屬性,也叫實例屬性。

    10.類的成員變量就是類屬性
    答:錯。類屬性和變量無關,而是根據 get 方法得到類的屬性。

    11.類屬性一定是類的成員變量
    答:錯。類屬性和變量無關

    12.類屬性一定是類變量
    答:錯。類屬性是根據 get 方法得到的,屬性和變量沒有半毛錢關系。類變量是靜態變量。

    13.類變量就是類屬性
    答:錯。類變量是指 static 修飾的變量,也叫靜態變量。而類屬性則是根據 get 方法得來的,兩者不是同一個概念

    總結

    以上是生活随笔為你收集整理的如何理解Java的类变量、成员变量、常量、类属性、实例属性、字段(field)、成员方法、类方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。