java中static的作⽤
static关键字主要有两种作⽤: 为某特定数据类型或对象分配单⼀的存储空间,⽽与创建的对象⽆关; 实现某个⽅法或属性与类⽽不是对象关联在⼀起, 也就是在不⽤创建对象的情况下就可以通过类来直接调⽤⽅法或使⽤类的属性.
1). static成员变量: 静态变量属于类,在内存中只有⼀个复制(只在类被创建时在内存中创建⼀次),只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使⽤了。对静态变量的引⽤有两种⽅式,分别是“类.静态变量"和”对象.静态变量", 静态变量被所有的对象共享; 实例变量属于对象,只有对象被创建后,实例变量才会被分配内存空间,才能被使⽤,它在内存中存在多个复制,只有⽤“对象.实例变量”的⽅式来引⽤。
2).static成员⽅法:Java中提供了static⽅法和⾮static⽅法。static⽅法是类的⽅法,不需要创建对象就可以被调⽤,⽽⾮static⽅法是对象的⽅法,只有对象被创建出来后才可以被使⽤; static⽅法中不能使⽤this和super关键字,不能调⽤⾮static⽅法,只能访问所属类的静态成员变量和成员⽅法,因为当static⽅法被调⽤时,这个类的对象可能还没被创建,即使已经被创建了,也⽆法确定调⽤哪个对象的⽅法。同
理,static⽅法也不能访问⾮static类型的变量。
3).static代码块: static代码块在类中是独⽴于成员变量和成员函数的代码块的。注意:这些static代码块只会被执⾏⼀次, 在JVM加载类时会执⾏static代码块, 如果有多个static代码块, JVM按按顺序来执⾏.
4). static内部类: static内部类是指被声明为static的内部类, 它可以不依赖于外部类实例对象⽽被实例化, ⽽通常的内部类需要在外部实例化后才能实例化.
5). static与final结合使⽤: 对于变量,若使⽤static final修饰,表⽰⼀旦赋值不能修改,并且通过类名可以访问, 对于⽅法,若使⽤static final 修饰,表⽰该⽅法不可被覆盖,并且可以通过类名直接访问。static修饰的变量
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论