final与static修饰符

目录

final

 static:

静态变量

静态方法

静态代码块

静态类


final

final修饰的常量每个字母都要大写。

1:final修饰的常量不可以被第二次赋值

2:final阻止继承

3:final阻止方法的重 写

4:防止指令重排序,保障多线程可见性安全

(指令重排序:提高电脑的性能,指令在运行过程中,过程发生改变最终结果不变)

 final 修饰的引用类型的常量只能保证地址不被改变不能保证值不被改变:

  public static void main(String[] args) {
     final int[] arr = {1,2,3,4,5};
     arr[2]=8;
     for (int a:arr){
         System.out.println(a);
       }
    }

输出结果:

 static:

         static是java语言中的关键字,表示“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。在java语言中凡是用static修饰的都是类相关的,不需要创建对象,直接通过“类名”即可访问,即使使用“引用”去访问,在运行的时候也和堆内存当中的对象无关。

         

静态变量

    我们用static表示变量的级别,一个类中的静态变量,不属于类的对象或者实例。因为静态变量与所有的对象实例共享,因此他们不具线程安全性。

通常,静态变量常用final关键来修饰,表示通用资源或可以被所有的对象所使用。如果静态变量未被私有化,可以用“类名.变量名”的方式来使用。

//static variable example
private static int count;
public static String str;复制ErrorOK!

静态方法

与静态变量一样,静态方法是属于类而不是实例。

一个静态方法只能使用静态变量和调用静态方法。通常静态方法通常用于想给其他的类使用而不需要创建实例。例如:Collections class(类集合)。

Java的包装类和实用类包含许多静态方法。main()方法就是Java程序入口点,是静态方法。

//static method example
public static void setCount(int count) {
    if(count > 0)
    StaticExample.count = count;
}

//static util method
public static int addInts(int i, int...js){
    int sum=i;
    for(int x : js) sum+=x;
    return sum;
}复制ErrorOK!

从Java8以上版本开始也可以有接口类型的静态方法了。

静态代码块

Java的静态块是一组指令在类装载的时候在内存中由Java ClassLoader执行。

静态块常用于初始化类的静态变量。大多时候还用于在类装载时候创建静态资源。

Java不允许在静态块中使用非静态变量。一个类中可以有多个静态块,尽管这似乎没有什么用。静态块只在类装载入内存时,执行一次。

static{
    //can be used to initialize resources when class is loaded
    System.out.println("StaticExample static block");
    //can access only static variables and methods
    str="Test";
    setCount(2);
}复制ErrorOK!

静态类

Java可以嵌套使用静态类,但是静态类不能用于嵌套的顶层。

静态嵌套类的使用与其他顶层类一样,嵌套只是为了便于项目打包。

原文地址:https://zhuanlan.zhihu.com/p/26819685


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值