`
L.G.Alexander
  • 浏览: 155745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(八):final与static final变量(引用类型)的引用不变

 
阅读更多
public class FinalReferenceTest {
	public static final StringBuffer sb = new StringBuffer();
	public static void main(String[] args){
		sb.append("hello");
	}
}

问题1:上面的程序能否编译通过?如果能,说明理由,如果不能,请说明理由。
解答:能编译通过。
分析:对于final修饰的引用类型,到底这个引用不能变还是这个引用指向的对象的内容不能变?答案是引用不能改变,而引用指向的内容是可以改变的。

问题2:上面的程序在语句sb.append("hello");后面添加语句 sb = new StringBuffer()能否编译通过?如果能,说明理由,如果不能,请说明理由。
解答:不能编译通过。
分析:由于对于final修饰的引用类型,是引用不能改变,而引用指向的内容是可以改变的。因为sb已经指向了第一次new...产生的对象,已经不能改变,所以在语句sb.append("hello");后面添加语句 sb = new StringBuffer()是不能编译通过的。

总结:对于final类型的引用变量来说,所谓的不能改变指的是该引用不能改变。
分享到:
评论

相关推荐

    final和static用法详解JAVA

    根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。

    Static和Final修饰类属性变量及初始化

    1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.

    java中final关键字和static关键字详细用法

    根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。

    Java-关键字final详解(public static final)

    一、final修饰类 B类继承A类,相当于对A类的功能进行扩展,如果不希望对A类进行扩展...(2)fina修饰的变量如果这个变量是一个”引用”会怎么样? 解析:s2里面最初分配了0x123,然而你再给final进行赋值就不行了,因

    深入理解Java final变量的内存模型

     在构造函数内对一个 final 域的写,与随后把这个构造对象的引用赋值给一个变量,这两个操作之间不能重排序  初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序  举...

    java继承详解

    常量的定义格式: public static final 数据类型 变量名 定义常量的时候,常量的名字要大写,如果存在两个单词组合起来的名字,要用下划线连接 public static final int AGE = 23;// public static final String ...

    Java关键字总结

    1>对于基本类型前加以final修饰,表示被修饰的变量为常数,不可以修改。一个既是static有是final的字段表示只占据一段不能改变的存储空间。 2>final用于对象应用时,final使应用恒定不变。一旦引用被初始化指向一个...

    Java并发--final关键字.docx

    在Java中变量可以分为成员变量和局部变量 成员变量 通常每个类中成员变量可以分为 类变量(static修饰的变量) 以及 实例变量 针对这两种类型的变量...当final变量未初始化时系统不会进行隐式初始化,会出现报错。

    java面试真题整理

    栈内存:基本数据类型的变量,方法的返回值,对象的引用(对象的引用地址) 3.static:存放在静态域中和类属于同一个属性,修饰的方法:类名.static 4.Java多态的体现方式方法的重载,重写,对象的多态性 1.编译时...

    资深互联网大佬的5000字吐血总结——Java面向对象三大修饰符之abstract、static、final

    static 可以修饰初始化代码块扩充内容三、final(最终的,最后的)1.final可以修饰变量2.final可以修饰方法3.final可以修饰类总结abstract、static、final可以修饰的内容abstract、static、final是否可以修饰构造...

    java为什么匿名内部类的参数引用时final?final局部变量的生命周期

    在知乎上看到了一篇帖子 在这个问题下面大家已经吵得不可开交了,看了很多篇文章,被误导进了很多的坑,发现只有下面两篇文章是写的最好的,解释的很... public static void main(String[] args) { String str=haha

    【Java基础】Java8新特性—接口中使用default和static关键字

    接口中的变量默认类型是public static final,也是就是说是 公有静态常量 。 而方法默认是public abstract,公有抽象方法,但是事实真的是这样吗? 一.新特性 Java 1.8对接口有两个方面的增强:接口中可以添加使用...

    【05-面向对象(下)】

    •但对引用类型的变量而言,它仅仅保存的是一个引用,final只能保证他的地址不变,但不能保证对象,所以引用 类型完全可以改变他的对象。 可执行“宏替换”的final变量 •对一个final变量来说,不管它...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记的方法不能被子类复写; (3).final标记的变量即成为常量,只能被赋值一次. 注意: 如果使用final来...

    类的使用,学习,小结 java定义一个学生类

    [public /protected /private /static /final] 数据类型 变量名称; [public /protected /private /static /final /abstract] 返回值类型 方法名字(参数){ //如果返回值类型不是void,必须有return语句 } }

    java模拟题库面试题目64道经典答题及答案

    1. 我们能不能声明 main()方法为非静态?...使用 final 关键字修饰一个变量时, 是指引用变量不能变, 引用变量所指向的对象中的 容还是可以改变的。 5. string、 stringbuilder、 stringbuffer 区别

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

    只能是可修改变量,不能使final变量,因为final的语义就是不可修改。 对于AtomicIntegerFieldUpdater和AtomicLongFieldUpdater只能修改int/long类型的字段,不能修改其包装类型(Integer/Long)。如果要修改包装...

    单例模式简介

    知识回顾 修饰符:  权限修饰符:public、 protected、默认不写、private   public:共有的、当前工程的任意位置都能... 修饰变量:只有一次赋值的机会、赋值之后值不能发生改变  属性:要求必须赋初始值、不能

    protected修饰符与final修饰符.pptx

    protected修饰符与final修饰符Objectives(学习目标)理解访问修饰符protected的使用;会使用protected限制对... }final 变量: final static double PI = 3.14159;final 方法 不能被覆盖final class A{}class B extends

    Java面试常问问题.doc

    1、面向对象的理解 面向对象是基于面向过程的。在开发过程中,要完成特定的功能就去找相应的对象,如果找不到就创建相应的...final:可以修饰类、方法和变量,被final修饰的类无法被继承,方法无法被复写,变量为常量只

Global site tag (gtag.js) - Google Analytics