1.为什么要有static成员?
class Dog{
public int age;
public String name;
public String color;
public Dog(int age, String name, String color) {
this.age = age;
this.name = name;
this.color = color;
}
}
public class Test{
public static void main(String[] args) {
Dog dog1=new Dog("小白","白色");
Dog dog2=new Dog("小黑","黑色");
Dog dog3=new Dog("小黄","黄色");
}
}
在这里我创建了一个狗类并进行实例化三个对象
2.什么是static成员
我们可以发现这些小狗的年龄好像都一样,那我们是否可以只写一次就可以运用到全员呢?于是这时候我们就要使用到static
2.什么是static?
static:static是用来修饰成员变量或成员方法的,被static修饰的成员,成为静态成员,也可以称为类成员,静态的成员只有一份,存在方法区当中,其不属于某个具体对象,是所有对象所公有的
3.static的访问形式
class Dog{
public static int age;
public String name;
public String color;
public Dog(String name, String color) {
this.name = name;
this.color = color;
}
}
1.通过对象的引用访问:对象名.被静态的成员
public class Test{
public static void main(String[] args) {
Dog dog1=new Dog("小白","白色");
dog1.age=2;
Dog dog2=new Dog("小黑","黑色");
dog2.age=2;
Dog dog3=new Dog("小黄","黄色");
dog3.age=2;
}
}
2.通过类名访问:类名.被静态的成员
Dog.age=2;
那使用以上这两种方法那种更好呢?
static称为静态成员变量,也称为类变量。也就是说这个变量是属于类的,不依赖变量,他是所有对象所共享的,不属于某个对象的空间中。所以更推荐使用类名访问
静态成员变量特性
- 属于类,不依赖于对象,不需要实例化;
public class Test{ public static void main(String[] args) { Dog.age=2; } }
- 推荐使用类名访问;
- 类变量储存在方法区当中;
- 生命周期随类的一生;
- 可以在非静态成员方法中访问静态成员方法
- 不能在静态成员方法访问任何非静态成员方法,因为静态方法不依赖于对象,可以通过类名来访问;非静态方法依赖于对象,需要通过对对象的引用访问。