美文网首页
进阶:final

进阶:final

作者: 雪上霜 | 来源:发表于2020-04-24 20:47 被阅读0次
  • final关键字

    • 表示最终的,不可变的。
    • 可以修饰变量,方法,类等。
    • final修饰的类无法继承。
    • final修饰的方法不能被覆盖。
    • final修饰的局部变量不能重新赋值。final修饰的变量只能赋值一次。
    • final修饰的引用只能指向一个对象,只能永远指向该对象。并且在该方法执行过程中,该引用指向改对象之后,该对象不会被垃圾回收器回收, 直到当前方法结束,才会被释放。对象内的数据可改。
  • final修饰的实例变量,系统不管赋默认值,必须程序员手动赋值。在构造方法中赋值和在属性后直接赋值都可。

  • final修饰实例变量一般添加static修饰。

  • static final联合修饰的变量称为常量,建议大写,每个单词之间采用下划线衔接。

  • 常量和静态变量都存储在方法区,并且都是在类加载时初始化。常量一般都是公开的。

  • public class FinalTest{
      public static void main(String[] args){
          final int i = 100;
          
      }
    }
    
    final class A{
    
    }
    //B类继承A类,对A进行扩展,加个final则A就不能被继承。
    class B extends A{
    
    }
    
    //String 不能被继承。
    class MyString extends String{
    
    }
    
    class C{
      public final void doSome(){
      
      }
    }
    
    //D中doSome不能覆盖C中的
    class D extends C{
      public void doSome(){
      
      }
    }
    
  • public class FinalTest{
      public static void main(String[] args){
          Person p1 = new Person(20);
          System.out.println(p1.age);
          
          final Person p = new Person(20);
          p = new Person(30); //错误,无法给p分配值。
          
                p.age = 30;  //可以
          
      }
    }
    
    class Person{
      int age;
      public Person{
      
      }
      public Person(int age){
          this.age = age;
      }
    }
    
image.png
public class FinalTest{
    public static void main(String[] args){
        
    }
}

class User{
    final int age;  //实例变量 ,错误。
    final int age = 10; //可以    
    
    final double weight;
    
    public User(){
        this.weight = 80;   //只要在系统赋默认值之前赋值即可。可以
    }
}
public class FinalTest{
    public static void main(String[] args){
        
    }
}

class User{
    String idCard;
    String name;
    public static final String country = "中国";//实例变量在堆中,一个变量一份。实例变量使用final修饰,说明该实例变量不会随对象的变化而变化。
    
    
}

相关文章

  • 进阶:final

    final关键字表示最终的,不可变的。可以修饰变量,方法,类等。final修饰的类无法继承。final修饰的方法不...

  • Kotlin 进阶之路8 程序结构

    Kotlin 进阶之路 目录 常量 val = value,值类型 类似Java的final 不可能重复赋值 变量...

  • Android进阶–final、finally、finalize

    首先补充听课心得(二)内容:默认情况在Android Studio中使用try-with-resources会提示...

  • OkHttpy源码之Request

    final HttpUrlurl; final Stringmethod; final Headersheader...

  • 用Redis做QPS限制

    通过set(final String key, final String value, final String ...

  • Java关键字final、static使用总结

    final final类 final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。...

  • Java中static和final总结

    1 final 1.1 final总结 final修饰类:表示该类不可继承;final不能修饰interface接...

  • 面向对象,多态

    final:修饰类,方法,变量 final修饰类:此类无法被继承; final修饰方法:不能被重写; final修...

  • 2020-04-26

    一. final A 选项在 final 定义的方法里,不是必须要用 final 定义变量。B final 定义的...

  • 20180911-final关键字

    原文链接final用来修饰变量,方法,类。 final variable:创建常量; final methods:...

网友评论

      本文标题:进阶:final

      本文链接:https://www.haomeiwen.com/subject/phcqwhtx.html