成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

都說變量有七八種,到底誰是 Java 的親兒子

開發(fā) 后端
變量是我們經(jīng)常用到的一種,但是變量這個概念還是比較繁瑣的,本篇文章就來深入認(rèn)識一下 Java 中這些變量的概念。

變量是我們經(jīng)常用到的一種,我在剛學(xué) Java 的時候,也經(jīng)常被各種變量的概念折磨,當(dāng)時并沒有細(xì)摳,但是我在寫一篇類似的文章中,想把變量作為一種小標(biāo)題來簡述一下,但是發(fā)現(xiàn),變量這個概念還是比較繁瑣的,本篇文章就來深入認(rèn)識一下 Java 中這些變量的概念。

變量匯總

所以,到底有哪些變量的概念呢?距今為止,目前已知的變量主要有:

  • 實例變量
  • 全局變量
  • 靜態(tài)變量
  • 類變量
  • 局部變量
  • 成員變量
  • 常量

下面我們就采用各個擊破的方式來認(rèn)識每個概念。

實例變量

實例變量又被稱為Instance variables。不使用 static 關(guān)鍵字定義,并且在任何方法、構(gòu)造方法、塊之外的變量都是實例變量。實例變量都是基于特定實例的,實例變量不會在實例之間共享,也就是說,每一個對象的實例都有自己的一個實例變量。下面是實例變量的一個例子

  1. class Fruits { 
  2.    
  3.   public String fruitName; // 具有公共訪問權(quán)限的 fruitName; 
  4.   private int fruitNum;   // 具有私有訪問權(quán)限的 fruitNum; 
  5.    

你可以使用下面這種方式進行實例變量的調(diào)用

  1. public class Fruits { 
  2.  
  3.     public String fruitName; 
  4.     private int fruitNum; 
  5.  
  6.     public static void main(String[] args) { 
  7.         Fruits fruits = new Fruits(); 
  8.         fruits.fruitName = "strawberry"
  9.         fruits.fruitNum = 100
  10.     } 

1. 如何識別實例變量

那么我如何知道一個變量它是實例變量呢?下面是一些關(guān)于實例變量的定義規(guī)則

  • 實例變量可以使用四種訪問修飾符進行修飾:public、protected、default、private
  • 實例變量可以使用 transient、final 關(guān)鍵字進行修飾
  • 實例變量不可以使用 abstract、synchronized、strictfp、native、static關(guān)鍵字進行修飾

實例變量帶有默認(rèn)值,也就是說,實例變量不用初始化就能使用。下面是常用實例變量的初始值

2. 實例變量的特點

上面我們了解了實例變量的基本特征和如何區(qū)分實例變量,下面我們來講一下實例變量的特點。

  • 實例變量的只能在類中聲明,但是在方法、構(gòu)造函數(shù)或任何塊之外。
  • 當(dāng)在為堆中對象分配空間時,將為每個實例變量分配一塊區(qū)域。
  • 實例變量只能通過創(chuàng)建對象來使用,當(dāng)使用 new 關(guān)鍵字進行創(chuàng)建對象時,實例變量同時也被創(chuàng)建,當(dāng)垃圾回收器回收對象時,實例變量也會被銷毀。
  • 實例變量可以使用訪問修飾符來修飾
  • 實例變量不用強制初始化,它有自己的默認(rèn)值。
  • 每個對象都有自己的一個實例變量的副本,因此在一個對象中修改變量不會對其他對象中的實例變量造成影響
  • 實例變量只能通過創(chuàng)建對象引用來使用。

二、全局變量

全局變量又被稱為Global variables。如果你有其他語言的編程經(jīng)驗,比如 C、C++ 的話,你會接觸到全局變量這個概念,你可以使用下面代碼來創(chuàng)建全局變量

  1. #include<stdio.h> 
  2.  
  3.  // 全局變量 
  4.  int A; 
  5.  int B; 
  6.  
  7.  int Add() 
  8.  { 
  9.   return A + B; 
  10.  } 

但是在 Java 中,是不存在全局變量的。因為 Java 是一門面向?qū)ο蟮木幊陶Z言,所有的內(nèi)容都是屬于類的一部分。Java 這么做的原因是為了防止數(shù)據(jù)和類成員被其他程序的其他部分有意或者無意的修改。所以在 Java 中,使用 靜態(tài)變量 來起到全局訪問的目的。

三、靜態(tài)變量

靜態(tài)變量又被稱為Static variables。靜態(tài)變量的定義比較簡單,靜態(tài)變量是屬于該類的變量,它是由 static 關(guān)鍵字來修飾的。static 修飾的變量屬于靜態(tài)變量,它只能定義在類的內(nèi)部、方法的外部。

靜態(tài)變量的特點:

靜態(tài)變量只能使用 static 關(guān)鍵字進行修飾,它不能在方法中進行聲明,不論是靜態(tài)方法還是非靜態(tài)方法。

  • 靜態(tài)變量會在程序運行前進行初始化,并且只初始化一次。靜態(tài)變量會有一個初始化順序,我們后面說。
  • 靜態(tài)變量的所有實例共享同一個副本。也就是說,靜態(tài)變量只有一個,它不會隨著對象實例的創(chuàng)建而進行副本拷貝
  • 靜態(tài)變量可以通過類名.變量名 進行訪問,并且不需要創(chuàng)建任何對象就能訪問。
    1. public class Fruits { 
    2.  
    3.     public String fruitName; 
    4.     private int fruitNum; 
    5.     static String fruitType; 
    6.  
    7.     public static void main(String[] args) { 
    8.         Fruits.fruitType = "apple"; // 類名.變量名 
    9.         System.out.println(fruitType); 
    10.     } 
  • 可以在非靜態(tài)方法 中使用靜態(tài)變量

四、類變量

類變量又被稱為 Class variables在 Java 中,類變量就是靜態(tài)變量,它們都用 static 關(guān)鍵字進行修飾,所以,如果你再聽到說靜態(tài)變量的時候,它也就是類變量。

五、局部變量

還有一種說法,說 Java 中只有類變量、實例變量和局部變量。這么分也沒有問題,可能有人會問到,你把成員變量和常量放在哪了?別著急我們后面會說

先來說一下什么是局部變量:

局部變量又稱為 Local variables。它指的是在方法中、構(gòu)造器中或者塊代碼中定義的變量。局部變量的生命周期隨方法、構(gòu)造器、代碼塊的執(zhí)行完畢而銷毀。

不管上面的一些變量概念如何變換、局部變量都站如松,坐如鐘,行如風(fēng),臥如弓,從容應(yīng)對各種不同文章的比較。真是一個省事的變量。

那么這么好的東西我們可要仔細(xì)研究一下其特點是啥:

  • 根據(jù)定義可知,局部變量定義在方法、構(gòu)造器或者代碼塊中;
  • 然后局部變量的生命周期隨方法、構(gòu)造器、代碼塊的執(zhí)行完畢而銷毀;
  • 局部變量不能使用訪問修飾符,例如如下代碼
  • 局部變量僅在方法的聲明、構(gòu)造函數(shù)或者塊內(nèi)可見,局部變量只能在調(diào)用這些方法、構(gòu)造函數(shù)或者塊的內(nèi)部使用
  • 局部變量沒有默認(rèn)值,所以局部變量應(yīng)該在第一次使用或者聲明的時候就應(yīng)該初始化完成

六、成員變量

什么?成員變量在 Java 中就是實例變量?這個結(jié)論對嗎?

常量

[[327386]]

驗證過程為了驗證這個結(jié)論,我們求助于 stackoverflow 網(wǎng)站

我們搜索 java member variable and instance variable 就幫我們定位到了這個標(biāo)題

大致意思是:什么是成員變量?成員變量和實例變量是否相同呢?我們下面有個回答

第一句就給出,實例變量和類變量都稱為成員變量,然后給出了 JDK 官網(wǎng)手冊對變量的定義。意思是在 Java 中,只有三種類型的變量

  • 定義在類中的成員變量 --- 被稱為屬性
  • 定義在方法(包含構(gòu)造方法)或者塊代碼中的變量 --- 被稱為局部變量
  • 定義在方法定義中的變量 --- 被稱為參數(shù)

嗯。。。或許還不是很好解決我們的問題,我?guī)е鴨栴}再次求助 JDK 官網(wǎng)手冊,又看到了關(guān)于 Variables 的定義

意思是在 Java 中,只有下面幾種類型的變量(別扯別的了,莫非你比官網(wǎng)還靠譜?)

  • 實例變量(非靜態(tài)屬性) :大致意思就是說
  • 非靜態(tài)屬性也就被稱為實例變量,因為它們的值是相對于每個實例來說的。換句話說,對于每個對象來講,實例變量的值都是唯一的;
  • 類變量(靜態(tài)屬性):類變量就是使用 static 修飾符聲明的字段,這就會告訴編譯器:無論該類被實例化了多少次,該變量只存在一個副本。另外,可以添加關(guān)鍵字 final 來表示常量。
  • 局部變量:沒有特殊的關(guān)鍵字將制定的變量聲明為局部變量、確定其聲明的完全取決于聲明變量的位置。
  • 參數(shù):想一下我們平常用到最多的方法是什么方法?當(dāng)然是 main 方法啊,main 方法是怎么定義的?
    1. public static void main(String[] args) {} 

其中的 args 是不是就是 String 的數(shù)組的變量,我們也稱其為參數(shù),所以參數(shù)也沒有關(guān)鍵字進行聲明,標(biāo)識其為參數(shù)也只是取決于其聲明位置。

總結(jié)

所以我寫了一篇文章為了給你講清楚,現(xiàn)在你應(yīng)該知道 Java 中到底有哪些變量了吧。

如果你用 static 來定義變量,只能是類變量、或者說靜態(tài)變量、而且其定義位置只能在類中,方法或代碼塊外,變量的副本只有一個。

如果你不用 static 來聲明變量,那么就會有三種變量的叫法

  • 定義在構(gòu)造方法、代碼塊、方法外的變量被稱為實例變量,實例變量的副本數(shù)量和實例的數(shù)量一樣。
  • 定義在方法、構(gòu)造方法、代碼塊內(nèi)的變量被稱為局部變量;
  • 定義在方法參數(shù)中的變量被稱為參數(shù)。

也就是下面代碼所描述的這樣

  1. public class VariablesInJava { 
  2.  
  3.  int instanceVariable; // 實例變量 
  4.  
  5.  static String staticVariable; // 類變量 
  6.  
  7.  public void method() { 
  8.      
  9.   String localVariable = "localVariable"; // 局部變量 
  10.   System.out.println(localVariable); 
  11.  } 
  12.  
  13.  public static void main(String args[]) {} //參數(shù) 

 

責(zé)任編輯:趙寧寧 來源: 程序員cxuan
相關(guān)推薦

2011-12-05 10:33:49

QQ騰訊w808

2019-05-15 11:38:22

GoogleGo編程語言

2012-05-16 17:22:14

Android手機

2020-04-09 13:57:02

Swift可微分編程谷歌

2020-07-24 09:20:21

彈窗開機游戲

2021-09-28 16:22:48

區(qū)塊鏈大數(shù)據(jù)應(yīng)用

2021-06-11 10:20:23

區(qū)塊鏈大數(shù)據(jù)技術(shù)

2021-09-07 14:17:12

區(qū)塊鏈版權(quán)技術(shù)

2021-03-15 13:36:23

區(qū)塊鏈大數(shù)據(jù)技術(shù)

2019-11-11 22:33:49

電商雙11廠商

2021-10-25 22:46:54

手機硬件價格

2020-11-26 14:29:23

手機iPhone蘋果

2018-06-14 21:03:41

數(shù)據(jù)庫MySQL日志類型

2024-08-30 09:05:45

2025-03-28 14:50:01

2019-05-22 10:38:00

5G芯片中興

2017-09-06 14:51:21

Swift

2021-02-19 10:40:48

HashMap線程Java

2010-09-14 08:56:36

云計算

2010-05-11 17:09:52

Google蘋果
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品自拍av | 高清一区二区三区 | 免费人成激情视频在线观看冫 | 一级欧美黄色片 | 一区二区在线免费观看 | 国产精品午夜电影 | 国产高清视频在线观看 | 国产免费一区二区 | 免费观看www| 亚洲成人精品一区 | 亚洲精品日韩精品 | 精品三级在线观看 | 国产精品久久久久久久久久久久冷 | 二区av| 亚洲永久字幕 | 成人永久免费 | 久草欧美| 91精品国产综合久久国产大片 | 欧美亚洲一级 | 国产中文字幕在线 | 国产精品久久久久久婷婷天堂 | 国产精品久久久久久久模特 | 无码一区二区三区视频 | 婷婷在线免费 | 成人免费看黄网站在线观看 | 一级黄色片日本 | 日韩精品1区2区3区 爱爱综合网 | 欧美日韩一区二区视频在线观看 | 91高清视频在线观看 | 91一区二区| 激情网站 | 国产精品18久久久久久久 | 超黄毛片 | 日日干干 | 日韩在线观看网站 | 成人在线电影网站 | 成人国产精品久久 | 成人精品国产免费网站 | 日韩免费视频 | 一区二区三区欧美 | 亚洲欧美在线观看 |