- static,final都是Java的修饰符
- static:当我们想不通过创建类直接调用类中的方法时,可以通过static关键字来实现。static是静态修饰符。静态优先于非静态存在内存中
- static特点:
- 被 static 修饰的成员变量属于类,不属于这个类的某个对象。也就是说,多个对象在访问或修改 static 修饰的成员变量时,其中一个对象将 static 成员变量值进行了修改,其他对象中的 static 成员变量值跟着改变,即多个对象共享同一个 static 成员变量。
代码演示: class Demo { public static int num = 20; } class Test1 { public static void main(String[] args) { Demo d1 = new Demo(); Demo d2 = new Demo(); d1.num = 200; System.out.println(d1.num); //结果为 200 System.out.println(d2.num); //结果为 200 } } |
- 被 static 修饰的成员可以通过类名直接访问。
类名.静态成员变量名
类名.静态成员方法名(参数)
对象名.静态成员变量名 ------不建议使用该方式,会出现警告
对象名.静态成员方法名(参数) ------不建议使用该方式,会出现警告
4.static注意事项
1)一个类中,静态成员只能访问静态成员。非静态成员可以访问静态或非静态成员。
2)静态内容是优先于对象存在,只能访问静态,不能使用 this/super。静态修饰的内容存于静态区
class Demo { //成员变量 public int num = 100; //静态方法 public static void method(){ //this.num; 不能使用 this/super。 System.out.println(this.num); } } |
5.static在多态调用中
static的规则:静态属于类,不属于对象;多态是对象的属性,与静态无关;
public class Fu { String str ="fu"; final String s2 ="fuFinal"; public static String show (){ return "fu"; } } public class Zi extends Fu{ } public class Test1 { |
-----------------------------
6.final:意思为最终,不可变
7.被final修饰的特点:
1)final修饰的类不能被继承,但是可以继承其他类
2)final修饰的方法可以被继承,但是不能重写。父类中的方法如果没有被final修饰,子类重写后可以加final修饰
3)final修饰的局部变量:一次赋值,终生不变。具体分情况
final修饰的基本变量,一次赋值,终身不变。但是final修饰的引用型变量,比如StringBuilder,Map等,其
引用(地址值)不可变,但是引用指向的内容是可以变了。比如map可以put
8.了解完static,final,简单说明一下静态常量,就是同事被final,static修饰的常量
public static final 数据类型 变量名 =值;
接口中的每个成员变量都默认使用 public static final 修饰。
所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接
用接口名访问。
interface Person{ public static final int MAX_AGE= 100; } |
Person.MAX_AGE
本博客为自己总结亦或在网上发现的技术博文的转载。 如果文中有什么错误,欢迎指出。以免更多的人被误导。
邮箱:[email protected]
版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/ChinaMuZhe,未经博主允许不得转载。