A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

说return会先执行但不会退,把返回值传入给一个返回通道里面,然后执行完finally后再返回值。试问内存中会有通道么?数据的返回通道是指执行指令流水的过程么?我觉得内存中都是存储的二进制,应该不许要什么路径吧,直接改变电流重写对应的内存的二进制不就行了么?真的有通道么?有运行轨迹么?

14 个回复

正序浏览
gyy 中级黑马 2016-10-18 01:10:10
15#
张镓仁1 发表于 2016-10-17 18:44
哥么。我就是想问一下jvm的走路流程啊,这个老师不讲,所以来提问的啊 长个知识的啊 ...

具体的流程还涉及到文法、句法之类的编译器的解析过程,并不是那么容易讲清楚的,你可以就这么理解
回复 使用道具 举报
gyy 中级黑马 2016-10-18 01:08:26
14#
张镓仁1 发表于 2016-10-17 18:38
3103510352,哥么这我球球,彼此多交流

上班白天很忙,也没多少时间来解答,回答的不及时的话,别见怪
回复 使用道具 举报
gyy 发表于 2016-10-17 14:00
你可以这么想,jvm在解释try代码块的时候,会执意的去检查一下是否有finally代码块。如果有的话,那么在 ...

哥么。我就是想问一下jvm的走路流程啊,这个老师不讲,所以来提问的啊 长个知识的啊
回复 使用道具 举报
gyy 发表于 2016-10-17 14:00
你可以这么想,jvm在解释try代码块的时候,会执意的去检查一下是否有finally代码块。如果有的话,那么在 ...

哥么。我就是想问一下jvm的走路流程啊,这个老师不讲,所以来提问的啊 长个知识的啊
回复 使用道具 举报
gyy 发表于 2016-10-17 14:00
你可以这么想,jvm在解释try代码块的时候,会执意的去检查一下是否有finally代码块。如果有的话,那么在 ...

哥么。我就是想问一下jvm的走路流程啊,这个老师不讲,所以来提问的啊
回复 使用道具 举报
gyy 发表于 2016-10-17 13:57
我去,这个论坛竟然不能支持传图片。。

3103510352,哥么这我球球,彼此多交流
回复 使用道具 举报
gyy 中级黑马 2016-10-17 14:00:55
9#
张镓仁1 发表于 2016-10-17 13:43
public static void main(String[] args) {
                try {
                        System.out.println(10/1);

你可以这么想,jvm在解释try代码块的时候,会执意的去检查一下是否有finally代码块。如果有的话,那么在中间遇到return的时候,不会立即返回,只有等到finally代码块结束以后在返回。如果没有的话,就返回了。除非你强制的让虚拟机进程挂掉
回复 使用道具 举报
gyy 中级黑马 2016-10-17 13:57:27
8#
我去,这个论坛竟然不能支持传图片。。
回复 使用道具 举报
gyy 发表于 2016-10-17 13:48
是运行机制,我画一个图给你看看你就知道

恩,在线等,我们这儿下午停电,正好下午不上课了
回复 使用道具 举报
gyy 中级黑马 2016-10-17 13:48:14
地板
张镓仁1 发表于 2016-10-17 13:45
上面这个代码,指令流水应该是cpu的,和这个没太多关系。但是老师说会产生一个返回路径,我就好奇内存中 ...

是运行机制,我画一个图给你看看你就知道
回复 使用道具 举报
gyy 中级黑马 2016-10-17 13:47:01
报纸
张镓仁1 发表于 2016-10-17 13:43
public static void main(String[] args) {
                try {
                        System.out.println(10/1);

恩,我明白了你想问什么,我现在画一个大致的流程图给你看看执行的过程
回复 使用道具 举报
gyy 发表于 2016-10-17 13:40
不太明白你的意思,内存中存储的的的确确是二进制的,而不同的类型的数据占用不同的长度,或者相同的数据长 ...

上面这个代码,指令流水应该是cpu的,和这个没太多关系。但是老师说会产生一个返回路径,我就好奇内存中如何创建一条路径啊?return不就是跳出这个函数么?也许这些都是Java虚拟机运行机制的东西,老师是不会细说的。
回复 使用道具 举报
public static void main(String[] args) {
                try {
                        System.out.println(10/1);
                } catch (Exception e) {
                        System.out.println("除数为零了");
                        //System.exit(0);                                                                //退出jvm虚拟机
                        return;
                } finally {
                        System.out.println("看看我执行了吗");
                }
        }
回复 使用道具 举报
gyy 中级黑马 2016-10-17 13:40:52
沙发
不太明白你的意思,内存中存储的的的确确是二进制的,而不同的类型的数据占用不同的长度,或者相同的数据长度。他这里的返回路径可能指的是一个返回的地址吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马