Java知识10 变量类型【多测师】

类变量(静态变量):独立于方法之外的变量 用static修饰
实例变量:独立于方法之外的变量 没有static修饰 //必须先创建一个对象 实例化
局部变量(类方法中的变量):类的方法中的变量
成员变量(直接可被类调用和访问、非静态变量):独立于方法之外 类似:String a=‘xiao'
重点:静态变量是用来声明规则的,一旦固定都是用来引用的类似法律,规定好后只需拿来用,但是也可以改
通过重新的声明法律就习惯
public class Variable{ 
    static int allClicks=0; // 类变量 
    String str="hello world"; // 实例变量 
    public void method(){ 
        int i =0; // 局部变量 
    }
}

重点:实例变量和成员变量的区别:
主要的区别:就是访问是否需要创建对象、而对于类成员变量、所有对象是共享一个变量的
class Text{
    public static int number;
    public int temp;
}
如上:要访问temp属性、必须先创建一个Text对象 才能访问:Text b =new Text();
b.temp 这个就是实例成员变量
而想访问number的话 不用创建Text的实例直接可以访问 Text.number 这就是类成员变量

一、局部变量
举例子:
以下实例中age是一个局部变量 定义在pupAge()方法中 它的作用域在这个方法中
public class Test {
  public void pupAge() {
   int age = 0;
   age = age + 7;
   System.out.println("小狗的年龄是: " + age);
  }

  public static void main(String args[]) {
   Test test = new Test(); //创建一个对象进行实例化
   test.pupAge(); //用实例化的对象调用pupAge()方法
  }
}

二、实例变量
public class Employee {
  // 这个实例变量对子类可见
  public String name;
  // 私有变量,仅在该类可见
  private double salary;

  // 在构造器中对name赋值
  public Employee(String empName) {
   name = empName;
  }

  // 设定salary的值
  public void setSalary(double empSal) {
   salary = empSal;
  }

  // 打印信息
  public void printEmp() {
   System.out.println("名字 : " + name);
   System.out.println("薪水 : " + salary);
  }

  public static void main(String args[]) {
   Employee empOne = new Employee("RUNOOB");
   empOne.setSalary(1000);
   empOne.printEmp();
  }
}
运行结果: 
名字 : RUNOOB
薪水 : 1000.0

三、类变量 static修饰
public class Employee {
  // salary是静态的私有变量
  private static double salary;
  // DEPARTMENT是一个常量
  public static final String DEPARTMENT = "开发人员";

  public static void main(String args[]) {
   salary = 10000;
   System.out.println(DEPARTMENT + "平均工资:" + salary);
  }
}
运行结果: 开发人员平均工资:10000.0

四、实例变量在整个类内部都是可访问的、而不管实例变量声明在类的哪个位置
public class Employee {

  public Employee(String empName) {
   name = empName;
  }

  public void setSalary(double empSal) {
   salary = empSal;
  }

  public void printEmp() {
   System.out.println("name:" + name);
   System.out.println("salary:" + salary);
  }

  public static void main(String args[]) {
   Employee empOne = new Employee("RUNOOB");
   empOne.setSalary(1000);
   empOne.printEmp();
   System.out.println(empOne.salary);
  }

  public String name;
  private double salary;
}
运行结果:
name:RUNOOB
salary:1000.0
1000.0

五、类变量可在类中直接使用、实例变量需实例化后才能使用
public class StaticTest {
    public static int staticInt= 2;
    private int random = 2;

    public static void main(String[] args) {
  System.out.println(staticInt);
  StaticTest test = new StaticTest();
  System.out.println(test.random);
    }
}

六、类的静态数据成员值被所有对象共享,任何对象都可以访问类的静态数据成员。但是他们使用的是同一个数据,操作的是同一块内存,无论哪个对象修改了它,对其他对象来说,他已经变了。
class A {
  static int i;

  void change(int i1) {
   i = i1;
  }
}

public class Test {
  public static void main(String args[]) {
   A.i = 10;
   A a = new A();
   A b = new A();
   System.out.println(A.i + "," + a.i + "," + b.i);// 10,10,10
   a.change(40);
   System.out.println(A.i + "," + a.i + "," + b.i);// 40,40,40
   b.i += 10;
   System.out.println(A.i + "," + a.i + "," + b.i);// 50,50,50
  }
}
运行结果:
10,10,10
40,40,40
50,50,50
原文地址:https://www.cnblogs.com/xiaoshubass/p/13110756.html