static 静态的
static 可以用来修饰类的结构:属性 方法 代码块 内部类,但是不能修饰构造器
使用static来修饰属性
使用static来修饰方法称为静态变量
静态变量归类所有,随着类的加载而加载,而不是对象的创建。
先加载类到内存中,然后才加载对象,所以静态变量的加载早于对象的创建。
可以通过 类.静态变量 的方法调用静态变量。
由于类只会加载一次,所以静态变量也只会加载一次。存在方法区的静态域中(feild)
类不能直接调用实例变量,需要先创建对象,然后使用对象调用实例变量
调用关系 | 类变量 | 实例变量 |
类 | yes | no |
对象 | yes | yes |
栈:局部变量(就是在成员方法里面定义的变量我们称之为局部变量)
person p 中p为局部变量,存在于栈中
堆:new出来的结构:对象、数组
对象p中 char name=LiHua; int age=19为堆中的内容
方法区:类的加载信息,静态域,常量池 person.nation="中国";在方法区中
随着类的加载而加载,可以通过类来直接调用
调用关系 | 静方法态 | 非静态方法 |
类 | yes | no |
对象 | yes | yes |
不能使用类去调用非静态方法,只能使用类去调用静态方法
静态方法中只能调用静态的方法和属性
非静态方法中既可以调用静态方法和属性,也可以调用非静态的方法和属性
static在使用中的细节:在静态方法中,不能使用this关键字或super关键字
可以调用静态的结构
在开发中如何确定一个属性是不是static的:
属性被所有的对象共享,不会随着对象的不同而不同
操作静态属性的方法通常设置为静态的
工具类中的方法/属性通常声明为static的 Math.Arrays Math.Pi=3.1415926.....