变量至关于一个有名称的容器,用于装不一样类型的数据。而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的值存在于代码块中,代码块以外就莫得了 }