變量至關於一個有名稱的容器,用於裝不一樣類型的數據。而Java中根據變量定義位置的不一樣,又把變量分爲成員變量和局部變量。
因爲對修飾符尚未系統學習,就暫且以public訪問權限最高的做爲修飾符。
仍是先上一段代碼:學習
package com.my.pac03; /** * @author Summerday * @date 2019/11/29 14:44 */ public class VariablesTest { //成員變量會默認初始化 public int value;//定義實例變量 public static String name;//定義類變量,屬於類,而不是類的單個實例。 //main方法,程序入口 public static void main(String[] args) { VariablesTest test = new VariablesTest(); //實例訪問實例變量 test.value = 10; //類訪問類變量 VariablesTest.name = "typeName"; System.out.println(VariablesTest.name);//typeName //實例訪問類變量 test.name = "noTypeName"; System.out.println(VariablesTest.name);//noTypeName VariablesTest test2 = new VariablesTest(); //另外一個實例訪問類變量 System.out.println(test2.name);//noTypeName int val = test.addNum(5); System.out.println(val);//15 System.out.println(test.value);//15 //System.out.println(m); 錯誤,形參變量m已經消失 //System.out.println(n); 錯誤,方法局部變量n也會消失 test.printForeachOneTOTen(); } public int addNum(int m) { int n;//方法局部變量並不會初始化 //public int m;//局部變量不容許使用訪問修飾符修飾 //System.out.println(n);報錯,由於方法局部變量不會初始化 n = 3; return value += m; } public void printForeachOneTOTen(){ for(int i = 1;i<=10;i++){ System.out.print(i+" "); } //System.out.println(i);錯誤,i的值存在於代碼塊中,代碼塊以外就莫得了 } }
既然是做爲變量,那麼命名方面就應該遵循變量命名的規範,由多個有意義的英文單詞連成,首單詞首字母小寫,其餘單詞首字母大寫,務必見名知義。測試
1. 定義實例變量code
//定義實例變量 public int value;
2. 訪問實例變量作用域
//實例訪問實例變量 test.value = 10;
實例.實例變量
。1. 定義類變量it
//定義類變量 public static String name;
2. 訪問類變量for循環
//類訪問類變量 VariablesTest.name = "typeName"; //實例訪問類變量 test.name = "noTypeName"; System.out.println(VariablesTest.name);//noTypeName VariablesTest test2 = new VariablesTest(); //另外一個實例訪問類變量 System.out.println(test2.name);//noTypeName
類.類變量
。實例.類變量
。第一條經過類直接訪問類變量能夠接受,但第二條有點迷惑,但也能夠理解,畢竟類存在的範圍比實例要大。
經過測試:該實例並不擁有這個類變量,因此他訪問的不是實例變量,而依然是類變量。因此上面的操做,經過實例修改類變量和經過類直接修改類變量效果時同樣的。那麼,若是實例能夠直接修改該類的類變量的話,那麼這個類再建立其餘實例時,這個所謂的「共有的特性」就說改就改,變得十分不堪。class
是在方法裏定義的變量,根據定義形式的不一樣,分爲如下三種:test
//參數列表裏是形參 public int addNum(int m) { int n; n = 3; return value += m; }
int val = test.addNum(5); System.out.println(val);//15
形參m的值人爲指定,初始化在調用方法的時候由系統完成。這裏至關於,把5賦值給了int類型的形參變量m。容器
public int addNum(int m) { //int類型的n爲方法局部變量 int n;//局部變量並不會初始化 //System.out.println(n);報錯,由於方法局部變量不會初始化 n = 3; return value += m; }
//i就是存在於for循環代碼塊中的代碼塊局部變量 public void printForeachOneTOTen(){ for(int i = 1;i<=10;i++){ System.out.print(i+" "); } //System.out.println(i);錯誤,i的值存在於代碼塊中,代碼塊以外就莫得了 }