随笔 - 35  文章 - 21  trackbacks - 0
<2010年2月>
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

常用链接

留言簿

随笔分类

随笔档案

文章分类

搜索

  •  

最新评论

阅读排行榜

评论排行榜


Java 中函数参数传递和函数返回值都是以值方式传递的。当然,对于对象,我们也可以说是引用的方式传递,其实传递也是值,只不过是引用值。引用是一个对象的别名,对于引用的修改就是对于对象本身的修改。

为了便于理解还是可以说成是两种类型,原始类型以值方式传递,对象以引用方式传递。

向函数里传递参数,已经有很多java教程讲解了。这里主要记录一个 函数返回值的问题。在返回一个对象时,是返回值本身的应用,还是拷贝这个值,再传拷贝的引用呢。这是需要考虑清楚的。

这个问题,是我在 不同手机上调试 J2ME 程序时遇到的。

具体如下,这是一个关于时间的工具类。我发觉 Calendar 的 getTime() 在有的机器下 如 Nokia,返回的 Calendar 当前时间的一个拷贝的引用,而 SAMSUNG 则直接返回 Calendar 的当前时间的引用。这导致,我在想得到一个时间所在那一的起始时间和结束时间时,总是得到相同的值,即后一次调用的值。按照,比较正常的理解,这里应该返回拷贝的引用比较正确,就是说 SAMSUNG 的 JVM 实现有些问题。面对这种情况,我只能先用 Date 类 返回 一个 long 值,再用 long 值构造一个新日期,即日历当前日期的拷贝,返回这个拷贝。

修改函数中的最后一行为
return new Date(fCalendar.getTime().getTime());

    private static Date fCalendar = Calendar.getInstance();


    
/**
             * Get the beginning of a day
             * 
@param date <description>
             * 
@return <description>
             
*/
    
public static Date getBeginOfDay( final Date pDate ) {
        
       fCalendar.setTime( pDate );
       
try{
           fCalendar.set( Calendar.HOUR_OF_DAY, 
0 );
           fCalendar.set( Calendar.MINUTE, 
0 );
           fCalendar.set( Calendar.SECOND, 
0 );
        }
catch(ArrayIndexOutOfBoundsException ex){
            ex.printStackTrace();
        } 
        
return fCalendar.getTime();
    }
   
    
/**
             * Get the end of a day
             * 
@param date <description>
             * 
@return <description>
             
*/
    
public static Date getEndOfDay( final Date pDate ){
        
       fCalendar.setTime( pDate );
       
try{
           fCalendar.set( Calendar.HOUR_OF_DAY, 
23 );
           fCalendar.set( Calendar.MINUTE, 
59 );
           fCalendar.set( Calendar.SECOND, 
59 );
        }
catch(ArrayIndexOutOfBoundsException ex){
            ex.printStackTrace();
        }
        
return fCalendar.getTime();
    }





posted on 2010-02-24 21:36 lincode 阅读(2286) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: