博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java函数结束时的内存回收坑
阅读量:6488 次
发布时间:2019-06-24

本文共 877 字,大约阅读时间需要 2 分钟。

做树的题目时发现的。

函数里面创建的实例,如果只是对参数赋值,是会被回收的。

 

函数

1 public static void crete(TreeNode node){2         node = new TreeNode(111);3     }

 

调用

1 TreeNode node = null;2 TreeUtil.crete(node);3 System.out.println(node.val);

 

异常

1 Exception in thread "main" java.lang.NullPointerException2     at LeetCode101.main(LeetCode101.java:28)

 

按道理来说,我们在函数里面给这个参数创建了实例了。

但是,这个实例,会在函数结束的时候被回收掉,所以还是原来的null。

那要怎么办?要怎样才能获取函数里面操作后的结果?

把创建的实例作为返回值!

 

函数

1     public static TreeNode create(int x){2         TreeNode node = new TreeNode(x);3         node.left = new TreeNode(x+1);4         node.right = new TreeNode(x+2);5         return node;6     }

 

调用

1         TreeNode node = TreeUtil.create(1);2         System.out.println(node.val);3         System.out.println(node.left.val);4         System.out.println(node.right.val);

 

输出

123

 

不仅node的内存还在,他的左右孩子都还在

转载于:https://www.cnblogs.com/weizhibin1996/p/9191405.html

你可能感兴趣的文章
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>
算法 (二分查找算法)
查看>>
java Date 当天时间戳处理
查看>>
linux常用命令-关机、重启
查看>>
iOS开发之调用系统设置
查看>>
javascript 字符串转数字的简便写法
查看>>
Spring中jdbcTemplate的用户实例
查看>>
DecimalFormat 数据格式设置 SimpleDateFormat时间格式的用法介绍 --转载
查看>>
Android 的Margin和Padding属性以及支持的长度单位
查看>>
Django templates加载css/js/image等静态资源
查看>>
caffe solver
查看>>
Rhel6-heartbeat+lvs配置文档
查看>>
0317复利计算的回顾与总结
查看>>
函数对象
查看>>
最全最新个税计算公式---今天你税了吗?
查看>>
linux shell 正则表达式(BREs,EREs,PREs)差异比较(转,当作资料查)
查看>>
二分法求平方根(Python实现)
查看>>
使用startActivityForResult方法(转)
查看>>
so在genymotation中错误问题
查看>>