Java千百問_03基本語法(001)_區域性變數、類變數、例項變數有什麼區別
區域性變數、類變數、例項變數有什麼區別
在聊區域性變數、類變數、例項變數有什麼區別之前,我們需要了解一下Java變數。
1、Java變數是什麼
在數學世界中,我們知道有常量、變數。舉一個例子,小紅和小藍每個人都有帶了錢,小藍帶了5元,小紅的錢比小藍多10元。對於這樣一個場景,我們一般會使用方程式表達:
設小紅的錢為x,小藍的錢為y,其中x,y都是數字,得出方程式:
y=5;
x=y+10;
我們看一下這個過程,首先假設了2個x、y兩個變數,然後根據邏輯寫出2個為x、y賦值的方程式,方程式中有5、10兩個常量。
在程式世界中,同樣也有常量、變數。
與數學世界一樣,我們會先宣告變數(即數學中的假設變數,不同的是需要指定型別
int y=5;// 整型
int x;
x=y+10;
看了這個例子,可以總結出變數的定義:源於數學,是計算機語言中,能儲存計算結果或能表示值的抽象概念。在Java中,變數大體分為以下4類:類變數、常量、例項變數、區域性變數
public class Test { public static int classVar;// 類變數,即靜態變數,關鍵詞static public static final int constant = 10;// 常量,關鍵詞static,final,是一種特殊的類變數,一定要在宣告時賦值 public int instanceVar;// 例項變數 public void doTest() { int partVar;// 區域性變數 } }
明白了變數的概念後,我們分別看看Java中區域性變數、類變數、例項變數、常量的區別。
2、類變數(靜態變數)是什麼:
如上面例子,類變數在類中用static關鍵字宣告,在任意在方法、建構函式或程式碼塊外部。 類變數在程式啟動時被建立,在程式停止時被銷燬。類變數被儲存在靜態儲存器中。類變數通過呼叫的類名來訪問。 如:
public void doTest() {
Test.classVar;
}
類變數與物件毫無關係,無論有沒有建立物件,建立了多少個物件,一個類變數永遠只有一個副本。
3、常量是什麼:
常量是標記為final關鍵字的類變數,類變數的特性常量均有,再次列出與類變數的區別。如上面例子,宣告常量時必須賦值
常量名稱一般都需要大寫。
類變數被儲存在常量儲存器中。
4、 例項變數是什麼:
如上面例子,例項變數在類中宣告,在任意在方法、建構函式或程式碼塊外部。
例項變數在一個物件"new"時建立,在物件被銷燬時銷燬。
例項變數是物件的一部分,同對象一樣儲存在堆中。
例項變數通過物件來訪問。如果提供給外部物件的方法使用:
public void doTest() {
Test test = new Test();
test.instanceVar;//需要變數是public才能給外部物件使用
}
如果提供給物件自己的方法使用:
public void doTest() {
this.instanceVar;
instanceVar;//也可以不加this直接使用
}
5、 區域性變數是什麼:
如上面例子,區域性變數在方法、建構函式或程式碼塊中宣告。區域性變數在進入方法、建構函式或塊時建立,退出時被銷燬。
區域性變數在堆疊級別內部實現。
區域性變數可以直接在方法中使用:
public void doTest() {
int partVar;// 區域性變數
partVar = 1 + 1;
}
相關推薦
Java千百問_03基本語法(001)_區域性變數、類變數、例項變數有什麼區別
區域性變數、類變數、例項變數有什麼區別 在聊區域性變數、類變數、例項變數有什麼區別之前,我們需要了解一下Java變數。 1、Java變數是什麼 在數學世界中,我們知道有常量、變數。 舉一個例
Java千百問_03基礎語法(013)_>、>>、>>>有什麼區別
1、>、>>、>>>有什麼區別 瞭解java運算子看這裡:java種的運算子都有哪些 瞭解java運算子優先順序看這裡:java運算子的優先順序是怎樣的
Java千百問_02基本使用(011)_如何編寫單執行緒Socket程式
1、如何編寫單執行緒Socket程式 瞭解Socket看這裡:Socket是什麼 編寫Socket最簡單的就是單執行緒的Socket,但基本上是沒有實用意義的,因為在實際的應用中基本上是不止於一個Client的。一般都是多執行緒Socket程式。
Java千百問_02基本使用(015)_java如何通過彙編方式執行
1、java如何通過彙編方式執行 java本身不能通過彙編方式執行。但是,我們可以通過某些外掛,在執行中將java程式碼解釋為彙編指令,讓我們能夠通過分析執行的彙編指令來查詢一些問題,也可以幫
Java千百問_05面向物件(011)_引用傳遞和值傳遞有什麼區別
1、什麼是值傳遞 值傳遞,是將記憶體空間中某個儲存單元中存放的值,傳送給另一個儲存單元。(java中的儲存單元並不是實體記憶體的地址,但具有相關性) 例如: //定義了一個改變引數值的函式 public static void changeVa
Java千百問_03基本的語法(005)_二進制是如何做位運算的
無符號 img 進制 amp 取整 查找 進行 href 有符號 點擊進入_很多其它_Java千百問二進制是如何做位運算的程序中的全部數在計算機內存中都是以二進制的形式儲存的。位運算說白了,就是直接對整數在內存中的二進制位進行操作。其它運算符看這裏:java種的運算符都
Java千百問_06資料結構(006)_java基本資料型別如何轉換
1、基本型別如何相互轉換 我們看到,將一種型別的值賦給另一種型別是很常見的。在Java中,boolean型別與所有其他7種類型都不能進行轉換,這一點很明確。 對於其他7中數值型別,它們之間都可以進行轉換,但是可能會存在精度損失或者其他一些變化。 j
Java千百問_06資料結構(021)_StringBuffer/StringBuilder有什麼區別
1、StringBuilder是什麼 StringBuilder是非執行緒安全的可變字串類。 java.lang.StringBuilder這個可變的字元序列類是5.0新增的。繼承於AbstractStringBuilder(大部分方法都在該類實現)
Java千百問_04異常處理(002)_java如何捕獲異常
1、如何捕獲異常 捕獲的方法是使用try/catch關鍵字。將可能產生異常,並且需要捕獲的程式碼塊使用try/catch圍繞,如果產生了異常即可捕獲到,將直接中斷try程式碼塊,同時執行catch
Java千百問_05面向物件(002)_package和import作用是什麼
1、java中package是什麼 即包。簡單地說,它是分類class(類)與interface(介面)的方式。 在Java開發中,將會寫數以百計的類和介面,因此,對它們分類是必須的。 瞭解更多類看這裡:類、物件到底有什麼祕密 瞭解更多介面看這裡
Java千百問_05面向物件(008)_java中覆蓋是什麼
1、什麼是覆蓋 在java中,覆蓋是針對繼承才有的概念,某一個子類需要某些方法或屬性,但又不想使用父類中的同名的方法或屬性,就需要使用覆蓋。 直白的來說,就是在子類中編寫與父類同名、同參數、
複習之JavaScript基本語法(一)——三種引入方式及load、write事件
JavaScript是什麼 JavaScript一種直譯式指令碼語言,是一種動態型別、弱型別、基於原型的語言,內建支援型別。它的直譯器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的指令碼語言。 JavaScript的作用 JavaScript
Java千百問_05面向對象(005)_接口和抽象類有什麽差別
src ack function 興趣 沒有 序列 面向 問題 serial 點擊進入_很多其它_Java千百問 1、接口和抽象類有什麽差別 在Java語言中。抽象類abstract class和接口interface是抽象定義的兩種機制。 正
Java千百問_05面向對象(008)_java中覆蓋是什麽
返回 類變量 默認 public -m view ati 面向對象 text 點擊進入_很多其它_Java千百問 1、什麽是覆蓋 在java中,覆蓋是針對繼承才有的概念,某一個子類須要某些方法或屬性,但又不想使用父類中的同名的方法或屬性,就須要使
Java千百問_07JVM架構(013)_java什麼情況會記憶體溢位
1、Java堆什麼情況會溢位 所有物件的例項都在Java堆上分配記憶體,堆大小由-Xmx和-Xms來調節,如果程式使用的記憶體超過了堆最大記憶體(-Xmx),則會溢位Java heap space。 例項: public class Hea
Java千百問_07JVM架構(001)_java記憶體模型是什麼樣的
1、什麼是記憶體模型 Java平臺自動集成了執行緒以及多處理器技術,這種整合程度比Java以前誕生的計算機語言要厲害很多。Java針對多種異構平臺的獨立性,使得多執行緒技術也具有了開拓性的一面。 瞭解執行緒和程序看這裡:執行緒和程序有什麼
Java千百問_07JVM架構(012)_fullGC、minorGC、magorGC有什麼區別
1、fullGC、minorGC、majorGC有什麼區別 fullGC、minorGC、majorGC還有youngGC是Java垃圾處理機制(GC)的名詞,區分這幾個概念非常簡單: 老
Java千百問_07JVM架構(003)_記憶體分配有哪些策略
1、記憶體分配有哪些策略 我們從編譯原理講起,不同的開發環境、開發語言都會有不同的策略。一般來說,程式執行時有三種記憶體分配策略:靜態的、棧式的、堆式的 靜態儲存 是指在編譯時就能夠確定
Java基本語法(一)
宋體 tex keyword all return 計算 bubuko nal bre Java語法 1.Java語法——關鍵字 1.關鍵字概述 java語言中被賦以特定含義的單詞,用作專門用途的關鍵的字符串成為關鍵字(keyword)。 2.
Java基礎——Java的基本語法(陣列)
Java基礎知識圖解 陣列 陣列是多個相同型別資料的組合,實現對這些資料的統一管理 陣列中的元素可以是任何資料型別,包括基本資料型別和引用資料型別 陣列屬引用型別,陣列型資料是物件(object),陣列中的每個元素相當於該物件的成員變數 一維陣列宣告