zoukankan      html  css  js  c++  java
  • final与static

    public class Test0 
    {
    private static final String string;
    public Test0(String str)
    {
    string=str;
    System.out.println(string);
    }

    public static void main(String[] args)
    {
    Test0 t=new Test0("hello world");
    Test0 tt=new Test0("world hello");
    }

    }
    请问这段代码为什么构造方法里的string会报错,而去掉string定义时的static和final中的任何一个都可以通过?static和final为什么不能同时存在?还请指点

    private static final String string;
    final的意思是这个string不能再被改变。
    static的意思是这个string在类被加载的时候就加载了。

    private static String string;
    如果是这样,sting再类加载的时候加载了,仍然可以,给string赋值。
    private final String string;
    string=null。(如果private final String string=“aa”;不是null那么string=str也是错的)
    这里string的引用是不可以改变的,null是可以改变的,如string=str;而t.string="haha";这个就不行。

    你可以看一下final的解释,有很多不错的解释。我解释的不好,
    final String string=“final”;
    是开辟了2个内存空间,在栈中的string引用在堆中的final,其中string是始终指向堆中的final这个地址的引用,不能改变。但是堆中的final却可以改变。
  • 相关阅读:
    CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?
    贝塞尔曲线
    A little composer
    ABAQUS操作笔记
    ABAQUS薄板实例
    引用
    引用、重载、递归概念及应用
    Photoshop图片处理-云毕业照
    图片存储大小更改
    论文公式之“公式居中,序号在右”
  • 原文地址:https://www.cnblogs.com/lzq198754/p/5784482.html
Copyright © 2011-2022 走看看