`
xielingjiang
  • 浏览: 33958 次
  • 性别: 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基础知识学习入门

    Java编程语言是软件开发...总结,Java基础知识的学习涵盖了许多方面,从基本语法到面向对象编程,再到集合框架、异常处理、I/O流和多线程。通过理论学习与实践操作相结合,相信你一定能成功入门并逐步精通Java编程。

    java基础学习课件ppt

    Java基础学习课件PPT是一套全面覆盖Java SE(标准版)基础知识的教育资源,适合初学者和希望巩固Java技能的开发者。这套课件旨在在一个月内帮助学习者掌握Java编程的核心概念,为深入学习和应用Java技术打下坚实的...

    Java基础学习资料

    Java基础学习资料是一套全面的教程,旨在帮助初学者掌握Java编程的核心概念和技术。这个教程涵盖了从环境配置到高级主题的广泛内容,确保学习者能够扎实地建立起Java编程的基石。 首先,"开发环境搭建,基本语法,...

    java基础学习手册

    Java基础学习手册是针对初学者设计的一份详细教程,涵盖了Java编程语言的核心概念和基本语法。这份PPT旨在帮助新手快速入门,理解并掌握Java语言的基础知识,为更深入的学习和实际开发打下坚实的基础。 Java是一种...

    Java基础入门学习资料

    Java基础入门学习资料通常涵盖以下几个关键知识点: 1. **Java环境搭建**:首先,你需要安装Java Development Kit(JDK),这是编写、编译和运行Java程序所需的基础工具。在Windows、Mac或Linux系统上,都可以找到...

    java基础PPT学习

    这份“java基础PPT学习”资料旨在帮助初学者理解和掌握Java编程的基础知识,从而踏上编程之旅。 1. **Java简介** Java是由Sun Microsystems(现为Oracle公司)于1995年发布的,它的设计目标是“一次编写,到处运行...

    JAVA基础知识学习课件

    JAVA基础知识学习课件是针对初学者或在校大学生设计的一套完整的JAVA编程教程。这个课程涵盖了JAVA语言的基础概念,旨在帮助学习者建立起扎实的JAVA编程基础。以下是对每个压缩包文件内容的详细解释: 1. **lesson7...

    Java基础学习源码

    "Java基础学习源码"集合了初学者在学习Java时需要掌握的关键概念和实践操作。这个压缩包包含了整个Java基础学习过程的源代码,是学习者理解和巩固Java基础知识的重要资源。 1. **基本语法**: Java的基础语法包括...

    java零基础学习指南 源代码及教程

    Java零基础学习指南是一套全面且详尽的教育资源,旨在帮助初学者从零开始掌握Java编程语言。这个指南包括源代码实例和配套教程,确保学习者能够通过实践和理论相结合的方式深入理解Java的核心概念。 首先,Java是一...

    Java基础练习代码

    Java基础是学习编程语言的重要阶段,对于初学者来说,掌握好这一阶段的知识是成为熟练Java开发者的基石。本文将深入探讨Java基础练习代码中的关键概念,帮助初学者巩固基础,提高编程技能。 首先,Java是一种面向...

    Java基础学习示例源代码

    在"Java基础学习示例源代码"中,我们可以深入理解并掌握Java的基础知识,包括但不限于基本语法、图形用户界面(GUI)编程以及网络编程。 1. 基本语言: Java的基本语法是其学习的基础,包括数据类型(如整型、浮点...

    java基础学习与进阶

    对于初学者来说,Java基础学习是进入这个领域的第一步。本文将深入探讨Java的基础知识和进阶概念,帮助零基础的同学逐步掌握这门语言。 首先,我们要理解Java的基本语法。Java程序由类(class)组成,每个类都包含...

    Java基础相关学习 Java学习资料

    "Java基础相关学习"指的是对Java编程语言的核心概念、语法和常用API的学习过程。本资料集合可能包含了Java SE(标准版)的基础教程,帮助初学者掌握编程基础。 Java的学习通常从了解基本语法开始,例如变量、数据...

    Java基础学习视频-尚硅谷

    根据提供的文件信息,我们可以归纳出一系列与“Java基础学习视频-尚硅谷”相关的知识点。以下是对这些知识点的详细解析: ### Java基础知识概览 #### 1. Java简介 - **定义**:Java是一种广泛使用的面向对象编程...

    Java基础案例教程(第2版)-教学设计.zip

    《Java基础案例教程(第2版)》是一本旨在...通过《Java基础案例教程(第2版)》的学习,学生不仅可以掌握Java编程的基本技能,还能通过实践案例提升问题解决能力,为后续的Java进阶学习和实际项目开发打下坚实的基础。

    Java基础教程PPT

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大...总的来说,这份“Java基础教程PPT”涵盖了Java编程的基本要素,是初学者理想的自学资料,通过系统学习,可以为进一步的Java开发打下坚实的基础。

    java基础课程之一

    这个"java基础课程之一"的资源包显然旨在帮助学习者构建坚实的Java编程基础。在这个课程中,你将接触到一系列关键知识点,包括但不限于: 1. **Java环境配置**:首先,你需要安装JDK(Java Development Kit),并...

    java基础知识学习

    "Java基础知识学习"涵盖了从入门到进阶的各种概念,对于初学者或是需要巩固基础的开发者来说,这些都是不可或缺的知识点。 首先,Java的学习始于安装Java Development Kit (JDK),这是编写、编译和运行Java程序所需...

Global site tag (gtag.js) - Google Analytics