当前位置: 代码迷 >> J2SE >> 突然想到一个有关问题,可能有点钻牛角:参数用基本类型好还是引用类型好
  详细解决方案

突然想到一个有关问题,可能有点钻牛角:参数用基本类型好还是引用类型好

热度:8326   发布时间:2013-02-25 00:00:00.0
突然想到一个问题,可能有点钻牛角:参数用基本类型好还是引用类型好?
大定知道java八大基本类型都有其对应的引用类型,关于二者的区别我就不多说了,百度也知道,现看如下代码:
方法一:
public void test(long p1){
  //...
}
方法二:
public void test(Long p2){
  //...
}

当然,这两个方法中,方法二的参数是可以用null的,方法一不行。
但实际运用中,我們不可能传null进来的,(不知道程序前面肯定出问题了),如此一来,方法一和方法二,作用和使用上应该没区别了吧?
但如果非要钻牛角尖,各位大虾认为,这两个方法,用那个更好点呢?(可以从效率啊,习惯啊方面来表述)你們更习惯用那个呢?(当然其实用那个都没有错,呵)
欢迎来讨论。。。。

------最佳解决方案--------------------------------------------------------
基本类型的效率可是要比封装类型的要差不多快7倍,所以对于对数据大量运算的情况下还是用基本数据类型,对于BS的开发实体中的就用封装类吧。
------其他解决方案--------------------------------------------------------
引用:
引用:基本类型的效率可是要比封装类型的要差不多快7倍,所以对于对数据大量运算的情况下还是用基本数据类型,对于BS的开发实体中的就用封装类吧。
既然基本类型要比引用类型效率方面好这么多,那为何BS中,不用呢?而采用封装类?
其实大部java开发的,都是BS应用啊

实体映射数据库, 你如何能保证你数据路的字段不会是空值?基本数据类型是不能引用null的。
------其他解决方案--------------------------------------------------------
引用:


基本类型是要快不少,基本类型long存放在栈,运行速度快,还可以共享;而Long是对象,存放在堆,明显要慢不少。
通常在上游如果返回的是Long,不如说数据库查询等等,才会使用Long,扩展性要好一些,可以使用相应的方法。
除了上面这种情况,其他都应该直接使用long,效率高!如果你想用Long的方法,再在方法里面套一层Long.valueOf(long)即可。
同理,其他基本类型都是同样的情况!
------其他解决方案--------------------------------------------------------
呵呵,LZ,一个基本类型,一个封装类型,不过我参数穿的时候,都是基本类型!
------其他解决方案--------------------------------------------------------
果断用基本类型,以降低参数复杂度……
------其他解决方案--------------------------------------------------------
显然用基本类型
------其他解决方案--------------------------------------------------------
我同意 10 楼的看法,我觉得这才是为什么使用 Long 的原意,
也就是 为什么java 要将 基本数据类型都包装有相对应的 引用数据类型,而作为面向对象。
这不是多次一举.
------其他解决方案--------------------------------------------------------
大部分时候我见过的都是简单类型,封装类型的只有在做类型转换时采用的,比如将String转换为Integer。


因为没有积分了,没法发帖子,我来搭便车发个问题:
 最近做项目发觉我的jre在执行new Date()时获得的时间是GMT的时间,但同一段代码我的同事获得的却是CST时区的。请问,各位有没有遇到过类似的问题,大家是如何修改jre设置,使new Date()获取的时间是CST时区的。 
------其他解决方案--------------------------------------------------------
引用:
引用:大部分时候我见过的都是简单类型,封装类型的只有在做类型转换时采用的,比如将String转换为Integer。


因为没有积分了,没法发帖子,我来搭便车发个问题:
 最近做项目发觉我的jre在执行new Date()时获得的时间是GMT的时间,但同一段代码我的同事获得的却是CST时区的。请问,各位有没有遇到过类似的问题,大家是如……

你SimpleDateFormat 这个类格式化你的Date对象。跟你设置的时区木有任何关系!
------其他解决方案--------------------------------------------------------
引用:
引用:引用:大部分时候我见过的都是简单类型,封装类型的只有在做类型转换时采用的,比如将String转换为Integer。


因为没有积分了,没法发帖子,我来搭便车发个问题:
 最近做项目发觉我的jre在执行new Date()时获得的时间是GMT的时间,但同一段代码我的同事获得的却是CST时区的。请问,……

没有关系么?你看看我的执行结果就知道了。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Properties;
import java.util.TimeZone;

public class TestTime {
public static void main(String[] args) {
Date date=new Date();
System.out.println("将对象date直接输出: "+date);


TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8"); 
TimeZone.setDefault(tz); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
System.out.println(df.format(new Date())); 
System.out.println("-----------------------"); 
  相关解决方案