书中第142页这样解释:
Java允许在参数列表中以声明的方式将参数指明为final。这意味着你 无法在方法中更改参数引用所指向的对象:
此处红色区域;到底是说不能改变这个引用?还是说不能改变引用所指向的对象?还是二者都不可修改?
上代码测试了下;
1.首先可以确定;引用是绝对不允许修改的
2.测试看看引用指向的对象能不能改
public class Test {
public static void main(String[] args)
{
Info info = new Test().new Info();
info.setI(10);
System.out.println(info);
withFinal(info);
System.out.println(info);
}
public static void withFinal(final Info info)
{
info.setI(12);//标记一
//info = new Info();//标记二
}
class Info
{
@Override
public String toString() {
return "Info:" + i;
}
private int i ;
public void setI(int i)
{
this.i = i;
}
}
}
输出:
Info:10
Info:12
可见。final参数引用所指向的对象是可以修改的。
另:
代码中 标记二 处 说明了 final 参数引用本身是不能修改的。编译时错误
ps->以前还真没注意这个细节。这么经典的书对这点的解释也不够精准。呵呵
分享到:
相关推荐
Java编程规范是软件开发过程中的重要指南,尤其对于大型企业如阿里巴巴来说,一套严谨的编码规范可以确保代码的可读性、可维护性和团队协作效率。以下是对"阿里Java开发规范"的一些关键知识点的详细说明: 1. **...
- **Junit**: 流行的Java单元测试框架,支持自动化测试。 - **JUnit3**: 较旧版本,使用`setUp`和`tearDown`方法。 - **JUnit4**: 引入了注解(`@Before`, `@After`)简化测试编写。 **2.2 feed4junit** - **功能**: ...
### Java OOP阶段小测试-笔试题知识点解析 #### 一、选择题解析 ##### 1) 定义公有的int型常量 **题目解析:** 本题考察如何在Java中定义一个公共的整型常量。在Java中,常量通常需要使用`final`关键字来声明其不...
尽管这个版本相对较旧,但它仍然是理解Scala语言特性和编程思想的重要参考资料。随着技术的演进,Scala的后续版本引入了更多改进和新特性,如更好的Java互操作性、类型系统增强以及Dotty(现在的Scala 3)的酝酿,但...
课程目标 认识Java平台,了解java application和applet的开发,激发学员对Java编程语言的兴趣。 学习和掌握Java变量,运算符,控制结构,数组,方法等基本语法。 培养和建立面向对象编程...
Java笔试题是对求职者技能的一种综合测试,涵盖了Java语言的核心概念、面向对象编程、内存管理、多线程、集合框架等多个方面。以下是一些常见Java笔试题及其详细解答: 1. **super()与this()的区别**: - `super()...
通过观看“01-前五天回顾-编程思想(思路-步骤-代码-测试).avi”视频,你将能更深入地理解这些概念,并了解如何将它们应用于实际编程中。这个视频可能涵盖了从简单的类定义到复杂的设计模式,以及如何编写和运行Java...
#### 一、Java编程概述与基础知识 **1.1 Java编程那些事儿1——序言** 本章节主要介绍了作者撰写这本书的目的和背景,旨在帮助编程初学者更好地理解和掌握Java编程的基础知识。书中强调了通过通俗易懂的语言来解释...
Java编程基础结构化程序设计简介: 1. 程序的三种基本结构 2. 面向对象程序设计简介 3. 面向对象的基本特征 4. Java的面向对象特征 5. 类和对象 6. 注释、标识符和关键字 7. 数据类型分类 8. 基本数据类型 9. 基本...
29. Java虚拟机:JVM使得Java成为跨平台的编程语言,JVM负责运行Java程序。 30. 正则表达式:用于在字符串中执行模式匹配的一种强大工具。 31. 懒加载:对象或资源在真正需要时才进行加载。 32. 尾递归:递归形式...
Java是一种广泛使用的面向对象的编程语言,其设计思想主要围绕着三大特性:封装、继承和多态。在面试中,了解这些基本概念及其应用是非常重要的。 1. 面向对象的特点: - 抽象:抽象是将复杂的实体简化为更易管理...
- 阅读Java核心库的源代码,如`java.lang.String`、`java.util.HashMap`等,可以深入了解这些类的设计思想和实现细节。 - 比如,`java.lang.String`是如何实现不可变性的,`java.util.HashMap`内部是如何通过哈希表...
### Java重要概念与常见陷阱梳理 #### 一、Java简介 **1.1 Java体系分类** - **JavaSE(Java Platform Standard Edition)*...通过学习这些内容,可以帮助开发者更好地理解和掌握Java编程语言的核心原理和实践技巧。
面向对象是Java编程的核心思想之一,主要包括类和对象的概念、封装、继承、多态等内容。 ##### 2.1 面向对象与面向过程 - **面向对象**:将程序设计为一系列对象,每个对象代表一个实体或行为。 - **面向过程**:...
- **课程性质**:这是一门针对计算机专业本科生和研究生开设的基础课程,旨在介绍Java编程语言的基本原理和面向对象设计的核心理念。 - **重要性**:Java作为一种强大的编程语言,以其跨平台特性、简洁易懂的语法和...
【JAVA程序员面试三十二问详解】 1. **final, finally, finalize的...这些面试问题涵盖了Java的基础语法、面向对象特性、集合框架、并发编程、异常处理等多个方面,深入理解这些问题可以帮助开发者提升Java编程技能。
- Java是一种广泛使用的高级编程语言。 ##### JavaSE、JavaEE、JavaME区别 - **JavaSE**:标准版,用于开发桌面应用。 - **JavaEE**:企业版,用于开发Web应用。 - **JavaME**:微型版,用于嵌入式系统。 ##### ...