日期:2014-05-20  浏览次数:20820 次

java中原始数据类型和封装数据类型的用法如:double和Double的用法
java中提供原始数据类型,和封装数据类型(double和Double),求高手赐教什么时候该用double 什么时候该用Double,我知道double 是存储在栈中,而Double 是存储在堆中。最好是能从堆栈的角度解答什么情况下应该用double,什么情况下用Double,感激不敬。
jajva 存储 堆栈 数据类型

------解决方案--------------------
我不是高手,不过尝试着说下吧,double是java的基本类型数据,Double就如你所说是double的数据包装类,也就是说Double是一个类可以创建对象,至于它们都什么时候用,就要看情况了吧。需要用到对象的时候就只能用Double,比如想将double数据存储到集合中的时候,就用的是double的数据包装类,而不能是double.
------解决方案--------------------
double是基本数据类型,Double是原始数据类型
double没有方法,Double有自己的属性和方法
double只创建引用,Double创建对象
集合类不能存放double,只能存放Double
double存放在栈中,Double存放在堆中
栈的存取速度要高于堆,另外栈中的数据可以共享
如:
double a = 0;
double b = 0;
不会创建对象,只会建立两个引用,同时指向变量“0”(栈数据共享)

Double a = new Double(0);
Double b = new Double(0);
会创建两个对象,即使对象所代表的值一样(堆数据不共享)
所以从效率来讲用double合适,而Double提供的属性和方法会使操作各种操作更加方便和灵活
参考资料http://hi.baidu.com/wunla/item/5c39e0c326909459ac00ef54
------解决方案--------------------
拆箱和装箱。
------解决方案--------------------
引用:
引用:
比如想将double数据存储到集合中的时候,就用的是double的数据包装类,而不能是double.
关键 是为什么存储到集合中的是候要用Double而不用double? 求赐教。


呵呵 堆里只放数组和对象实例

栈里只放基本类型 double数据基本类型  能放到堆里吗? 所以只能用Double喽
------解决方案--------------------
引用:
引用:
呵呵 堆里只放数组和对象实例
栈里只放基本类型 double数据基本类型  能放到堆里吗? 所以只能用Double喽
1、按照这种说法当向集合中添加一个double类型的数据,最终会自动转换为Double类型存储对吗?
2、比如一个学生实体 
     student(){int id;//编号 double age; //年龄}
如果ne……


java是有编译器优化的 有个语法糖 编译器会进行一个优化,,,

泛型、装包/拆包 都是编译的时候实现的,比如泛型

List<User> userList = new ArrayList<User>();
User user = userList.get(0);
调用get不用强制转换。其实是java编译器语法糖对他进行了修改

ArrayList内部的get方法被加入了强转

比如
public class ArrayList {
  public User get(int index){
     return (User)list[index];
  }
}
此处只是举个例子,,,,

关于double加入List放到哪
double会自动装包成Double类型 举个例子 如下代码
public class Client {
public static void main(String[] args) {
double i = 1999999999;
List list = new ArrayList();
list.add(i);
}
}
编译后 在用工具反编译 如下
public class Client
{
  public static void main(String[] args)
  {
    double i = 1999999999.0D;
    List list = new ArrayList();
    list.add(Double.valueOf(i));
  }
}

明白了吧?
------解决方案--------------------
引用:
引用:
java是有编译器优化的 有个语法糖 编译器会进行一个优化,,,
语法糖,学习了。 
这么说来 其实我纠结的这个问题最终并不影响性能,因为变异为class 文件的后都会强转,是我这样理解吗?
谢谢。


对头 就是这样 这是编译期优化
------解决方案--------------------