-
java,麻烦深入讲解为什么结果是1?而不是2。5
public class Test { public static void main(String[] args) { System.out.println(new Test().test()); } static int test() { int x = 1; try { return x; } finally { ++x; } } }
2012年4月08日 13:46
2个答案 按时间排序 按投票排序
-
采纳的答案
昨天没时间,今天继续补全,既然是深入,就深入点咯
记得给我加分哈~~
写了个简单的类
static int test() { int x=5; try { return x; } finally { x=10; } }
编译后的字节码为
这里说一下,对于try catch finally的编译,编译器会把finally里的代码附在每一个分支的后面
static int test(); 0 iconst_5 1 istore_0 [x] //存在局部变量表0位置 2 iload_0 [x] //读取0位置到操作数栈 //下边是finally代码块,附在成功分支后面 3 istore_2 //另存在2位置 4 bipush 10 //10放入操作数栈 6 istore_0 [x] //存在0位置,所以,这时候0位置的变量为10 7 iload_2 //读取2号位置,这时是5 8 ireturn //返回5 //下面是异常分子处理 9 astore_1 10 bipush 10 12 istore_0 [x] 13 aload_1 14 athrow
2012年4月09日 10:43
-
因为在运行到return时,该返回值/地址就已经被记录
所以finally里的改变不会起作用
但假如返回值为引用类型,finally块是可以改变其内容的
如下例子~ 想想会返回什么
public class Test { public static void main(String[] args) { System.out.println(new Test().test().toString()); } static StringBuffer test() { StringBuffer x = new StringBuffer("hi"); try { return x; } finally { x.append("hello"); } } }
2012年4月08日 15:32
相关推荐
总之,Java基础的讲解涵盖了从语法到高级特性的方方面面,包括面向对象编程概念、数据类型、控制结构、异常处理、集合框架、输入输出、网络编程以及多线程。通过深入学习这些基础知识,开发者可以构建出强大、可靠且...
《孙卫琴Java面向对象讲解》是一套深入浅出的Java编程教程,专注于面向对象这一核心概念。孙卫琴老师以其丰富的教学经验,系统地阐述了Java语言中的面向对象编程思想,帮助学习者掌握这一重要的编程范式。下面将详细...
面向对象编程是Java的重要特性,书中会深入讲解类、对象、封装、继承、多态等概念。类是对象的蓝图,对象则是程序中的具体实例。封装允许我们隐藏实现细节,保护数据安全;继承则允许子类继承父类的属性和方法,实现...
《Java核心技术卷1》是Java开发者必读的经典之作,它深入浅出地讲解了Java编程的基础概念和技术。这本书主要涵盖了Java语言的核心要素,为初学者和有经验的开发者提供了全面的知识框架。 首先,我们来看看“Core ...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。这份压缩包文件"java最全面试题+答案+文档+书籍+讲解"提供了学习和提升Java技术的宝贵资源,包括试题、解答、相关文档、书籍以及...
通过阅读和理解`java泛型实例讲解代码`中的代码,你可以深入学习如何在实际编程中应用这些概念,以及它们如何提升代码的健壮性和可维护性。这个压缩包可能包含了各种示例,如泛型类、泛型方法、边界限制等,通过这些...
书中可能深入讲解线程同步、死锁和并发容器如`ConcurrentHashMap`等。 - **反射机制**:通过反射,开发者可以在运行时动态访问类、接口、字段和方法,实现高度灵活的代码操作。 - **注解(Annotation)**:用于在...
《Java核心技术》是Java开发领域的经典著作,分为卷1和卷2,涵盖了Java语言的各个方面。第七版的更新无疑融入了最新的Java版本特性,旨在帮助开发者深入理解和掌握Java编程的核心概念和技术。本压缩包包含了这两卷的...
Java私塾跟我学系列是为Java初学者精心编纂的一套教程,旨在系统地介绍Java编程语言的基础知识和实际应用。这个系列涵盖了从语言基础到高级特性的全面内容,是编程爱好者入门和进阶的理想资源。 Java是一种面向对象...
这本书深入浅出地介绍了Java语言的核心概念、语法以及编程思想,旨在帮助读者不仅掌握Java语言本身,更理解面向对象编程的精髓。 在Java学习的过程中,以下几个关键知识点是《Thinking in Java》中重点讲解的: 1....
这份“Java课件”集合了丰富的学习资源,旨在为初学者提供一个系统化的学习路径,帮助他们快速掌握Java编程的核心概念和技术。 首先,我们来探讨Java的基础知识。Java语言的设计理念是“一次编写,到处运行”,这...
接下来,第2章深入讲解了Java语言的基础知识,包括变量、数据类型、运算符、表达式和控制流程。这部分内容是编程的基础,学习者需要掌握如何声明和使用变量,理解不同类型的运算符以及如何通过条件语句和循环控制...
《JAVA2实用教程(第5版)》是耿祥义教授编著的一本经典Java编程教材,适合初学者和进阶者深入理解Java语言。这本书以其深入浅出的讲解方式和丰富的实例,深受广大读者喜爱。课后习题是学习过程中不可或缺的部分,它...
10. **Java虚拟机(JVM)**:深入讲解JVM的工作原理,包括类加载、内存模型、垃圾收集等。 11. **Java泛型**:泛型引入后,提高了代码的类型安全性和重用性,减少类型转换的麻烦。 12. **JDBC与数据库操作**:介绍...
《Java 2学习指南》是一本专为Java初学者和进阶者打造的全面教程,旨在帮助读者掌握Java 2的核心概念和技术。这本书以Pdf格式呈现,大小2.4Mb,方便用户在线阅读或下载保存,省去了购买实体书的麻烦。 在Java 2的...
18. **JDBC**:Java Database Connectivity,用于连接和操作数据库,讲解数据库连接、执行SQL语句、结果集处理等。 19. **设计模式**:讲解常见的设计模式,如工厂模式、单例模式、观察者模式等,这些都是软件工程...
4. **类与对象**:Java是面向对象的语言,讲义会深入讲解类的定义、对象的创建、封装、继承、多态等概念。 5. **数组与集合**:介绍一维和多维数组的使用,以及ArrayList、LinkedList、HashSet、HashMap等集合框架...
【JAVA学习PPT】是一份全面的JAVA编程学习资料,主要针对那些想要深入理解或开始学习JAVA编程语言的人。这份PPT涵盖了JAVA的基础到高级概念,通过十一章的内容,为学习者提供了一个系统性的学习路径。 第一章:JAVA...
《Java编程思想》是Java程序员领域的一本经典之作,由Bruce Eckel撰写,以其深入浅出的讲解方式和丰富的实例闻名。这本书对于想要深入理解Java语言的人来说,是一份宝贵的资源。"Thinking in Java",直译为“思考...
2. **类与对象**:Java是面向对象的语言,因此会讲解类的定义、对象的创建、封装、继承和多态等面向对象的基本概念。同时,也会涉及到构造函数、访问修饰符、抽象类与接口、内部类等相关知识。 3. **异常处理**:...