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