`
xielingjiang
  • 浏览: 32891 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java基础再学习之finally

阅读更多
	public static void test1(){
		String str1="Hello world";
		String str2=str1;
		str1="Hello";
		System.out.println(str2);
	}

输出是Hello World
	public static String getString(){
		String s1="1";
		try{
			return s1;
		}finally{
			s1="2";
		}
	}

输出是1

	static class Container{
		String str="x";
	}
	public static Container getContainer(){
		Container s1=new Container();
		try{
			s1.str="xx";
			return s1;
		}finally{
			s1.str="yy";
		}
	}

输出是yy

初看到这个代码,可能有点疑惑。但仔细分析,关键点在于java中值传递和引用传递的深刻理解上。

对于方法来说,任何操作都是在自己的栈上进行的,因此不可能存放很大的值比如对象的值,只能存放一些小类型,也就是原始类型,int,boolean,char等。
所以对于大数据的对象都是在堆上面分配空间new出来,然后在栈上保存一个对该堆上地址的引用。
String类也不例外,因为每次“”都是一个new的过程,只是在String特有的char堆里面new出来而已。

基于上述理解,我们分析一下开头关于finally的困惑。
getString()方法返回的是“1”的堆地址,而相应的finally块中又new出了一个新的String对象“2”,两者互不干涉。
Container()方法返回的是new Container()的堆地址,而相应的fanally块改变的是该堆地址上该Container实例里面的属性值,所以是确确实实改变了的。
0
0
分享到:
评论

相关推荐

    动力节点_Java基础视频教程154_finally子句

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴,配套资料下载:http://www.bjpowernode.com/?csdn

    JAVA基础课程讲义

    第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍  《java jdk 7学习笔记》是作者多年来教学实践经验的总结...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java学习笔记 初学者必读

    8.5. finally 声明 8-38 8.6. 异常调用栈 8-39 8.7. 异常层次 8-39 8.8. 一些未检查的异常 8-39 8.9. 写你自己的异常 8-39 8.10. 抛出你自己的异常 8-40 9. 八•图形用户接口 9-40 10. 九•AWT(Abstract Window ...

    讲解Java编程中finally语句的基本使用方法

    主要介绍了讲解Java编程中finally语句的基本使用方法,finally在异常处理中的使用时Java入门学习中的基础知识,需要的朋友可以参考下

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    详解Java异常处理中finally子句的运用

    主要介绍了Java异常处理中finally子句的运用,是Java入门学习中的基础知识,需要的朋友可以参考下

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java初学者入门教学

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    java联想(中文)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    java基础学习笔记之java oop高级java异常处理机制、集合、文件操作、序列化与反序列化、字符串处理(三)

    JAVA异常处理机制 一、什么异常(Exception) 1.生活中异常:不正常事件(意外) ...try、catch、finally、throw、throws 代码示例 package 理解异常; import java.io.IOException; import java.util.Scanner; import org.

    java自学之道

    第1章 Java基础概念 一、 Java基础语法 1、Helloworld.java 2、标识符 3、关键字 4、常量 5、变量 6、语句 6.1 if语句和switch语句 6.1.2 if语句举例 6.1.3 switch语句 6.2 for循环语句 6.3 while语句和do-while...

    JAVA_Thinking in Java

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Thinking in Java简体中文(全)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    疯狂JAVA讲义

    学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种...

    Thinking in Java 中文第四版+习题答案

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...

    超爽的自学课件(java)

    这一章将解释try、catch、throw、throws以及finally等关键字在Java中的工作原理。并讲述什么时候应当“掷”出违例,以及在捕获到违例后该采取什么操作。此外,大家还会学习Java的一些标准违例,如何构建自己的违例,...

    AIC的Java课程1-6章

     学习使用throw,throws检测抛出异常,使用try,catch捕获处理异常,使用finally子句释放资源。  掌握Java的异常层次结构,辨别checked exception和unchecked exception。  能够分别创建新的异常类,...

    21天学通Java-由浅入深

    60分钟) 217 11.1 异常处理基本介绍 217 11.1.1 try和catch捕获异常 217 11.1.2 try-catch语句使用注意点 218 11.1.3 finally语句的使用 220 11.1.4 再谈异常处理注意点 222 11.2 异常的分类 223 11.2.1 捕获异常 ...

Global site tag (gtag.js) - Google Analytics