static final关键字

  1. static,final都是Java的修饰符
  2. static:当我们想不通过创建类直接调用类中的方法时,可以通过static关键字来实现。static是静态修饰符。静态优先于非静态存在内存中
  3. 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{
String str ="zi";
final String s2 ="ziFinal";
public static String show (){
return "zi";
}

}

public class Test1 {
public static void main(String[] args) {
Fu fu = new Zi();
System.out.println(fu.str);  //fu
System.out.println(fu.show()); //fu
System.out.println(fu.s2);//fuFinal
}
}

-----------------------------

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,未经博主允许不得转载。

    

猜你喜欢

转载自blog.csdn.net/chinamuzhe/article/details/80488755