美文网首页
final和static

final和static

作者: Twinkle_______ | 来源:发表于2016-03-31 23:46 被阅读240次

经常看到有人在定义常量时,比如:

// 使用日志框架定义一个logger时
private static final Logger logger = LoggerFactory.getLogger(BalaService.class);

// 定义常量时
public final static String SUCCESS_CODE = "200"; 

看别人这样写,自己也模仿着这样写,有时还记不住final static,其实是自己没有明白其真正的含义。
引用
http://www.cnblogs.com/dolphin0520/p/3736238.html
这篇讲final的博客中的一段代码:

public class Test {
    public static void main(String[] args)  {
        MyClass myClass1 = new MyClass();
        MyClass myClass2 = new MyClass();
        System.out.println(myClass1.i);
        System.out.println(myClass1.j);
        System.out.println(myClass2.i);
        System.out.println(myClass2.j);
 
    }
}
 
class MyClass {
    public final double i = Math.random();
    public static double j = Math.random();
}

运行这段代码j的值是不变的,而i的值是变化的。
Java类中使用static修饰的,如static初始化代码块,static修饰的变量。Java类在初始化时优先初始化静态变量,静态初始化的变量保存在内存的全局区域,被这个类生成的对象所共享,关于内存的高深细节我现在也不是很明白,等后续跟进吧。

由上面的代码,j是类相关的变量,i是对象相关的变量。两次new MyClass() j 只会初始化一次,被MyClass生成的对象共享。i 会在一次new MyClass()时就初始化一次,所以 i 是变化的。

当使用static final去修饰一个变量时:

  • 期望是使用类名去访问这个变量,访问方便;
  • 使用这个变量时,类装载进JVM,只初始化一次,保存在内存的全局区域;
  • 可被多个对象实例共享;
  • final表示这个变量是个常量,不允许被改变。

关于static和final还有更多的细节,我只捡出工作中遇到的、有疑惑的部分,更多实际有趣的使用,还请你多多分享哦!

相关文章

  • static、final、static和final

    static 静态的修饰属性,静态属性和方法是属于该类的所有对象的,可以用类名.静态属性/方法名来访问。用stat...

  • Java知识点总结

    static final 和 static 的区别 static+final 静态常量,编译期常量,编译时就确定值...

  • final和static

    经常看到有人在定义常量时,比如: 看别人这样写,自己也模仿着这样写,有时还记不住final static,其实是自...

  • static和final

    1、static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变...

  • final,static,static final

    final,static, staic finalstatic final为编译常量,即在编译时期就为他分配空间和...

  • Java中的static和final

    java中的static和final 此篇文章是记录我在学习Java中static和final关键字的笔记。 st...

  • Java 面向对象2

    Java 面向对象 1. static 和 final static关键字---修饰成员变量 用static修饰的...

  • Android面试复习-Java基础

    关键字final和static final final变量即为常量,只能赋值一次 final方法不能被子类重写 f...

  • private static 和 final

    private static User user 修饰的对象在类中是私有化的,外部类无法进行修改,另外进行了常量化...

  • Android Toast提示工具类

    public final class ToastUtils { private static final int ...

网友评论

      本文标题:final和static

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