`

读《java编程思想》final 参数的测试

    博客分类:
  • java
阅读更多

书中第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->以前还真没注意这个细节。这么经典的书对这点的解释也不够精准。呵呵

分享到:
评论
1 楼 weng 2012-04-11  
并不是解释不准确,是翻译不行

相关推荐

    java编程规范

    Java编程规范是软件开发过程中的重要指南,尤其对于大型企业如阿里巴巴来说,一套严谨的编码规范可以确保代码的可读性、可维护性和团队协作效率。以下是对"阿里Java开发规范"的一些关键知识点的详细说明: 1. **...

    单元测试一条龙1.50final.pdf

    - **Junit**: 流行的Java单元测试框架,支持自动化测试。 - **JUnit3**: 较旧版本,使用`setUp`和`tearDown`方法。 - **JUnit4**: 引入了注解(`@Before`, `@After`)简化测试编写。 **2.2 feed4junit** - **功能**: ...

    Java OOP阶段小测试-笔试题

    ### Java OOP阶段小测试-笔试题知识点解析 #### 一、选择题解析 ##### 1) 定义公有的int型常量 **题目解析:** 本题考察如何在Java中定义一个公共的整型常量。在Java中,常量通常需要使用`final`关键字来声明其不...

    scala-2.7.5.final

    尽管这个版本相对较旧,但它仍然是理解Scala语言特性和编程思想的重要参考资料。随着技术的演进,Scala的后续版本引入了更多改进和新特性,如更好的Java互操作性、类型系统增强以及Dotty(现在的Scala 3)的酝酿,但...

    AIC的Java课程1-6章

     课程目标  认识Java平台,了解java application和applet的开发,激发学员对Java编程语言的兴趣。  学习和掌握Java变量,运算符,控制结构,数组,方法等基本语法。  培养和建立面向对象编程...

    java笔试题汇总,对找工作很有用

    Java笔试题是对求职者技能的一种综合测试,涵盖了Java语言的核心概念、面向对象编程、内存管理、多线程、集合框架等多个方面。以下是一些常见Java笔试题及其详细解答: 1. **super()与this()的区别**: - `super()...

    java面对对象程序入门

    通过观看“01-前五天回顾-编程思想(思路-步骤-代码-测试).avi”视频,你将能更深入地理解这些概念,并了解如何将它们应用于实际编程中。这个视频可能涵盖了从简单的类定义到复杂的设计模式,以及如何编写和运行Java...

    java初级入门

    #### 一、Java编程概述与基础知识 **1.1 Java编程那些事儿1——序言** 本章节主要介绍了作者撰写这本书的目的和背景,旨在帮助编程初学者更好地理解和掌握Java编程的基础知识。书中强调了通过通俗易懂的语言来解释...

    Java工程师必知必会.docx

    Java编程基础结构化程序设计简介: 1. 程序的三种基本结构 2. 面向对象程序设计简介 3. 面向对象的基本特征 4. Java的面向对象特征 5. 类和对象 6. 注释、标识符和关键字 7. 数据类型分类 8. 基本数据类型 9. 基本...

    百度Java面试题 前200页精选(上)

    29. Java虚拟机:JVM使得Java成为跨平台的编程语言,JVM负责运行Java程序。 30. 正则表达式:用于在字符串中执行模式匹配的一种强大工具。 31. 懒加载:对象或资源在真正需要时才进行加载。 32. 尾递归:递归形式...

    java常见面试题.docx

    Java是一种广泛使用的面向对象的编程语言,其设计思想主要围绕着三大特性:封装、继承和多态。在面试中,了解这些基本概念及其应用是非常重要的。 1. 面向对象的特点: - 抽象:抽象是将复杂的实体简化为更易管理...

    Java核心技术大全

    - 阅读Java核心库的源代码,如`java.lang.String`、`java.util.HashMap`等,可以深入了解这些类的设计思想和实现细节。 - 比如,`java.lang.String`是如何实现不可变性的,`java.util.HashMap`内部是如何通过哈希表...

    V20-Java笔记整理-重要概念和常见陷阱梳理.docx

    ### Java重要概念与常见陷阱梳理 #### 一、Java简介 **1.1 Java体系分类** - **JavaSE(Java Platform Standard Edition)*...通过学习这些内容,可以帮助开发者更好地理解和掌握Java编程语言的核心原理和实践技巧。

    Java基础知识

    面向对象是Java编程的核心思想之一,主要包括类和对象的概念、封装、继承、多态等内容。 ##### 2.1 面向对象与面向过程 - **面向对象**:将程序设计为一系列对象,每个对象代表一个实体或行为。 - **面向过程**:...

    2010年新Java教学大纲-2.0学分.doc

    - **课程性质**:这是一门针对计算机专业本科生和研究生开设的基础课程,旨在介绍Java编程语言的基本原理和面向对象设计的核心理念。 - **重要性**:Java作为一种强大的编程语言,以其跨平台特性、简洁易懂的语法和...

    JAVA程序员面试三十二问

    【JAVA程序员面试三十二问详解】 1. **final, finally, finalize的...这些面试问题涵盖了Java的基础语法、面向对象特性、集合框架、并发编程、异常处理等多个方面,深入理解这些问题可以帮助开发者提升Java编程技能。

    自整理Java关于基础和框架的面试题

    - Java是一种广泛使用的高级编程语言。 ##### JavaSE、JavaEE、JavaME区别 - **JavaSE**:标准版,用于开发桌面应用。 - **JavaEE**:企业版,用于开发Web应用。 - **JavaME**:微型版,用于嵌入式系统。 ##### ...

    Java程序设计课程实验10-接口和多态

    在Java程序设计中,接口和多态是两个非常重要的概念,它们构成了面向对象编程的核心特性。接口(Interface)是Java中定义行为规范的一种抽象类型,它允许类之间通过定义一组公共方法来实现通信,而无需关注具体的...

Global site tag (gtag.js) - Google Analytics