static和final关键字(static和final的顺序)

  本篇文章为你整理了static和final关键字(static和final的顺序)的详细内容,包含有static和final关键字的区别 static和final的顺序 static关键字的用法 final static和static final static和final关键字,希望能帮助你了解 static和final关键字。

  目录final关键字final修饰变量final修饰方法final修饰类static关键字static修饰变量static修饰方法static 修饰代码块static定义内部类关于初始化顺序

  final关键字

  final修饰变量

  被修饰的变量不能被改写

  对于基本类型来说,其值不能改变

  对于引用类型(对象),对象的引用不能改变,但对象内部的属性是可以改变的

  tips:在并发编程中,适当用final修饰一些只读变量,有利于减少额外的同步开销

  final修饰方法

  被修饰的方法不能被子类重写

  private方法隐式被定为final,所以若子类中定义的方法和父类中的private方法命名相同。那么此时子类并不是重写该父类方法,而是定义了一个新的方法

  final修饰类

  被修饰的类不能被继承

  static关键字

  static关键字只能定义在类中,不能定义在任何方法中

  static修饰变量

  用它修饰的变量叫静态变量,也称为类变量,该变量为类所有,即static只能定义在类中,不能在方法中,在内存中只存在一份

  

public class X {

 

   private int a; //实例变量

   private static int b; //静态变量

   public static void main(String[] args) {

   X x = new X(); //创建一个实例

   int a = x.a;

   int b = X.b;

  

 

  每创建一个实例,就会产生一个实例变量,与实例共生死

  static修饰方法

  静态方法必须要实现,不能是抽象方法。

  用它修饰的方法叫静态方法,类加载时静态方法会一起加载,否则需要先实例化类才能加载方法。

  static方法就是没有this的方法,即不用创建对象就能访问方法

  用类名.方法名进行访问

  注意:静态方法内部不能调用非静态方法,反过来可以;静态方法是类的方法,非静态方法是对象的方法

  static 修饰代码块

  用它修饰的代码块叫静态代码块。静态代码块可以置于类中的任何地方,类中可以有多个 static 块,在类初次被加载的时候,static 代码块按照顺序来执行,每个 static 修饰的代码块只能执行一次。

  

static {

 

   ....

  

 

  static定义内部类

  

public class OuterClass {

 

   class InnerClass {//非静态内部类

   static class StaticInnerClass {//静态内部类

   public static void main(String[] args) {

   OuterClass outerClass = new OuterClass(); //外部类实例

   InnerClass innerClass = outerClass.new InnerClass();

   StaticInnerClass staticInnerClass = new StaticInnerClass();

  

 

  非静态内部类依赖于外部类的实例,即需要先创建外部类实例,才能用这个实例去创建非静态内部类。而静态内部类不需要

  同时,静态内部类不能访问外部类的非静态的变量和方法

  关于初始化顺序

  static修饰的变量和代码块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。
 

  
 

  以上就是static和final关键字(static和final的顺序)的详细内容,想要了解更多 static和final关键字的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: