java 关键字之static
基础概念
属性:实例变量和类变量(static修饰的变量)
static可以修饰:属性,方法,代码块,内部类
static修饰属性(类变量)(在方法区):
1.同一个类创建的多个,每个对象单独拥有一份实例变量,共同拥有一份类变量
2.当某个对象对类变量修改后,其他变量也一样改变
3.类变量随着类加载而加载,实例变量是随着对象的创建而加载的。
4.导用类变量的方式:
1)类名.类变量名
2)对象名.类变量
5.静态方法中不能调用实例变量和非静态方法(类加载情况)
6.静态方法不能使用"this""super"关键字
static使用场景:
static修饰属性:1)多个对象拥有该属性时由static修饰,2)常量如E,PI
static修饰方法:1)常见的工具类中的方法都是静态方法 2)有时为了调用类变量方法也会定义静态方法
实例
class Person{
//实例变量
String name;
int age;
static String country;//类变量
// 非静态方法:
// 1.静态方法中能调用类变量和静态方法(类加载情况)
public void info(){
System.out.println(" name="+name+" age="+age+" country="+country);
}
//静态方法:
// 1.静态方法中不能调用实例变量和非静态方法(类加载情况)
public static void show(){
System.out.println("static show");
}
}
public class TestStatic {
public static void main(String[] args) {
// Person p=new Person();
// p.name="撒谎哥";
// p.age=29;
p.country="中国";
// Person.country="中国";
// p.info();
// Person p1=new Person();
// p1.name="马云";
// p1.age=39;
// p1.info();
// new Computer();
// new Computer();
// new Computer();
// Computer cp= new Computer();//count=4
// cp.show();
Employee e=new Employee("aa",18);
Employee e1 =new Employee("cc",18);
Employee e2 =new Employee("dd",18);
Employee e3=new Employee("ee",18);
e.show();//1
e1.show();//2
e2.show();//3
e3.show();//4
}
}
//需求:统计Computer类的创建对象的个数
class Computer{
static int count;
public Computer(){
count++;
}
public void show(){
System.out.println("count="+count);
}
}
//实现id自增
class Employee{
int id;
String name;
int age;
static int num=0;
public Employee(String name, int age) {
this.name = name;
this.age = age;
id=++num;
}
public void show(){
System.out.println(id);
}
}