我是靠谱客的博主 激情百褶裙,最近开发中收集的这篇文章主要介绍final和static关键字详解final关键字static关键字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 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修饰的变量和代码块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。

最后

以上就是激情百褶裙为你收集整理的final和static关键字详解final关键字static关键字的全部内容,希望文章能够帮你解决final和static关键字详解final关键字static关键字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部