来看看Java中的static
static
static:静态的。主要用来修饰类的内部结构,如:属性、方法、代码块、内部类。
static修饰属性
Java中的成员变量分为实例变量和静态变量,当用static修饰时就叫静态变量,反之为实例变量。
实例变量: 我们可以创建很多对象,每个对象又可以创建非静态变量,他们都各自独立,当修改其属性的 值并不会影响其他对象中同样属性的值。
静态变量: 当我们创建很多对象,他们共享同一个静态变量,其中一个对象修改其值的时候,会导致另一个对象在调用它的时候得到的值是改变了的。
注意:
- 静态变量是随着类的加载而加载,可以通过“类.静态变量”去调用。
- 静态变量的加载要早于对象的创建。
- 因为类只加载一次,所以静态变量在内存中也只存在一份:存在方法区的静态域中。
public class Man {
private String name;
private int age;
private static String sex;
public static void main(String[] args) {
Man.sex = "1";
// Man.name = "张三"; 不能直接通过类调用
Man man = new Man();
man.name = "张三";
}
}
static修饰方法
static修饰的方法叫做静态方法或类方法,也是随着类的加载而加载,可以通过“类.静态方法”去调用。
在静态方法中,只能调用静态的方法和属性。而在非静态方法中,可以调用非静态的方法和属性,也可以调用静态的方法和属性。
public class Man {
private String name;
private int age;
private static String sex = "0";
public static void main(String[] args) {
Man man = new Man();
man.method();
}
public void method(){
name = "张三";
String sex = getSex();
System.out.println("姓名:" + name + ",性别:" + sex);
}
public static String getSex(){
return sex;
}
}
什么地方需要用到static
属性:
- 属性可以被多个对象共同享用,不会因为对象的不同而不同。
- 类中的常量通常也声明为static
方法:
- 操作静态属性的方法
- 工具类中的方法。如:Math、Arrays等工具类