易截截图软件、单文件、免安装、纯绿色、仅160KB

关于Java函数调用的一点体会

首先请大家看看下面两段代码有什么区别:
代码1:
List<Task> tasks = new ArrayList<Task>();
Task[] allTask = DemoData.getTasksData();
 for(int i=0;i<allTask.length;i++){
        tasks.add(allTask[i]);
 }
--------------------------------------------------
代码2:
List<Task> tasks = new ArrayList<Task>();
for(int i=0;i<DemoData.getTasksData().length;i++){
        tasks.add(DemoData.getTasksData()[i]);
 }
-------------------------------------------------
从上面的代码可以看出,两种处理方法的不同主要体现在:一个是使用临时变量存储函数返回的结果,而另一个是直接使用函数调用的返回值
那么它们之间有什么区别呢?
原来,对于第一种方法,函数只调用了一次,而第二种方法调用了多次,采用第二种方法的人貌似是想节省一些“不必要的”变量以节省空间并使代码更简洁,其实适得其反,因为每次函数调用都会返回一个“临时变量”,而且如果DemoData.getTasksData()有大量的内存操作,那么这种开销是相当巨大的。
如果对内存要求不高,一般不会发现问题,但是如果DemoData.getTasksData()中有对内存进行的操作,特别是建立对象的操作,而对象间又存在一些依赖或关联关系,则第二种方法由于每循环一次都会调用DemoData.getTasksData()一次,因此对象间建立的关系并没有建立起来,tasks每次add的都是另一个版本的tasks data中的一个task,那次以后在使用tasks的时候就会出现问题:要么一个task的前置任务task找不到,要么为null,找不到是因为关联关系并没有建立正确,为null是因为多次申请的“无用对象”已经被释放了。
所以从这段示例中可以总结一点,对于一个存在返回值的函数,最好使用一个变量保存该返回值,以后直接使用该变量即可
(当然,涉及到深拷贝、浅拷贝之类的问题再另谈)。特别是对于Java,由于Java默认使用地址比较两个对象是否相等,所以采用第二种方法往往出现令人诧异的结果:因为不管你怎么System.out.println输出总是对的,然而他们只是内容一样,实际并不是相同的对象。


相关文档:

Java相对路径/绝对路径总结!


1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中 ......

GSON(JSON字符串转换成一个相等的Java对象)

Gson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。
代码例子:
util.Date和sql.Date被转成长整形用于序列化传输 
public class SQLDateSer
ializer implements JsonSerializer<java.sql.Date> {
public JsonElemen ......

Java基础知识

一、Java基础知识
1.Java
有那些基本数据类型,String是不是基本数据类型,他们有何区别。
2.字符串的操作:
 
写一个方法,实现字符串的反转,如:输入abc,输出cba
 
写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
3.数据类型之间的转换
 
如何将数值型字符转换为数字 ......

JAVA内部培训资料

JAVA内部培训资料

一、JAVA基础培训系列
1.孙鑫JAVA高级软件工程师班培训录像(2DVD)
 

简介:光盘由孙鑫老师亲自授课录制。循序渐进、通俗易懂、实战性强、内容全面、讲解深刻、问答形式是本套培训录像的特色。学员通过本套光盘的学习,能够快
速掌握Java编程语言,成为Java高手。
2.传智播客 ......

Java进阶学习:jar打包详解


jar文件听说过吗,没有?或者陌生!好,没关系,这就是我们的第一站:打包发布。
为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive (JAR) file,是的,就是java存档文件。这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号