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实例里面的属性值,所以是确确实实改变了的。
分享到:
相关推荐
Java编程语言是软件开发...总结,Java基础知识的学习涵盖了许多方面,从基本语法到面向对象编程,再到集合框架、异常处理、I/O流和多线程。通过理论学习与实践操作相结合,相信你一定能成功入门并逐步精通Java编程。
Java基础学习课件PPT是一套全面覆盖Java SE(标准版)基础知识的教育资源,适合初学者和希望巩固Java技能的开发者。这套课件旨在在一个月内帮助学习者掌握Java编程的核心概念,为深入学习和应用Java技术打下坚实的...
Java基础学习资料是一套全面的教程,旨在帮助初学者掌握Java编程的核心概念和技术。这个教程涵盖了从环境配置到高级主题的广泛内容,确保学习者能够扎实地建立起Java编程的基石。 首先,"开发环境搭建,基本语法,...
Java基础学习手册是针对初学者设计的一份详细教程,涵盖了Java编程语言的核心概念和基本语法。这份PPT旨在帮助新手快速入门,理解并掌握Java语言的基础知识,为更深入的学习和实际开发打下坚实的基础。 Java是一种...
Java基础入门学习资料通常涵盖以下几个关键知识点: 1. **Java环境搭建**:首先,你需要安装Java Development Kit(JDK),这是编写、编译和运行Java程序所需的基础工具。在Windows、Mac或Linux系统上,都可以找到...
这份“java基础PPT学习”资料旨在帮助初学者理解和掌握Java编程的基础知识,从而踏上编程之旅。 1. **Java简介** Java是由Sun Microsystems(现为Oracle公司)于1995年发布的,它的设计目标是“一次编写,到处运行...
JAVA基础知识学习课件是针对初学者或在校大学生设计的一套完整的JAVA编程教程。这个课程涵盖了JAVA语言的基础概念,旨在帮助学习者建立起扎实的JAVA编程基础。以下是对每个压缩包文件内容的详细解释: 1. **lesson7...
"Java基础学习源码"集合了初学者在学习Java时需要掌握的关键概念和实践操作。这个压缩包包含了整个Java基础学习过程的源代码,是学习者理解和巩固Java基础知识的重要资源。 1. **基本语法**: Java的基础语法包括...
Java零基础学习指南是一套全面且详尽的教育资源,旨在帮助初学者从零开始掌握Java编程语言。这个指南包括源代码实例和配套教程,确保学习者能够通过实践和理论相结合的方式深入理解Java的核心概念。 首先,Java是一...
Java基础是学习编程语言的重要阶段,对于初学者来说,掌握好这一阶段的知识是成为熟练Java开发者的基石。本文将深入探讨Java基础练习代码中的关键概念,帮助初学者巩固基础,提高编程技能。 首先,Java是一种面向...
在"Java基础学习示例源代码"中,我们可以深入理解并掌握Java的基础知识,包括但不限于基本语法、图形用户界面(GUI)编程以及网络编程。 1. 基本语言: Java的基本语法是其学习的基础,包括数据类型(如整型、浮点...
对于初学者来说,Java基础学习是进入这个领域的第一步。本文将深入探讨Java的基础知识和进阶概念,帮助零基础的同学逐步掌握这门语言。 首先,我们要理解Java的基本语法。Java程序由类(class)组成,每个类都包含...
"Java基础相关学习"指的是对Java编程语言的核心概念、语法和常用API的学习过程。本资料集合可能包含了Java SE(标准版)的基础教程,帮助初学者掌握编程基础。 Java的学习通常从了解基本语法开始,例如变量、数据...
根据提供的文件信息,我们可以归纳出一系列与“Java基础学习视频-尚硅谷”相关的知识点。以下是对这些知识点的详细解析: ### Java基础知识概览 #### 1. Java简介 - **定义**:Java是一种广泛使用的面向对象编程...
《Java基础案例教程(第2版)》是一本旨在...通过《Java基础案例教程(第2版)》的学习,学生不仅可以掌握Java编程的基本技能,还能通过实践案例提升问题解决能力,为后续的Java进阶学习和实际项目开发打下坚实的基础。
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大...总的来说,这份“Java基础教程PPT”涵盖了Java编程的基本要素,是初学者理想的自学资料,通过系统学习,可以为进一步的Java开发打下坚实的基础。
这个"java基础课程之一"的资源包显然旨在帮助学习者构建坚实的Java编程基础。在这个课程中,你将接触到一系列关键知识点,包括但不限于: 1. **Java环境配置**:首先,你需要安装JDK(Java Development Kit),并...
"Java基础知识学习"涵盖了从入门到进阶的各种概念,对于初学者或是需要巩固基础的开发者来说,这些都是不可或缺的知识点。 首先,Java的学习始于安装Java Development Kit (JDK),这是编写、编译和运行Java程序所需...