请教几个奇怪的问题!也许只是我一个人蒙在鼓里。

flyonsea 2007-10-29 12:28:04
问题1, double d = Double.valueOf("100");
这句能通过编译么?
在我的机器上不行,环境是MyEclipse 5.1.0 JDK1.5,1.6都试过,J2EE 1.4
在别人的机器上可以。
一直以来我都以为Double对象是不能直接给double赋值的。难道我一直都错了?

问题2, Map对象的get,put方法。get(1)来取值是被允许的么?put(1,someObject)也是被允许的么?


总结下来,问题似乎就是基础的数值类型和对应的对象可以直接转换么?我已经糊涂了。。。请明白人解答。万分感谢。
...全文
237 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2007-11-07
  • 打赏
  • 举报
回复
JDK版本
也要看IDE里设置的JDK版本
wesnow 2007-11-07
  • 打赏
  • 举报
回复
同意ls,1.5及以上都可以的。你说你试了1.5和1.6都不行,估计还是你自己机子上1.5jre和1.6jre的环境设置问题。估计实际上还是用的1.4编译的。
chenhao0431 2007-11-07
  • 打赏
  • 举报
回复
你试过报的错误是什么 给大家看看 我这里可以通过 是jdk1.5.0_09



你问的2个问题在不同版本的编译器都是不一样的 你要确定版本 !
fashi1000 2007-11-07
  • 打赏
  • 举报
回复

就是 编译输出 的版本 和 jre lib 版本设置的问题
有那么复杂吗
NVLING 2007-10-30
  • 打赏
  • 举报
回复
1.double d = Double.valueOf("100");
System.out.print(d) ;
这个是可以通过的;
===================
2.map.put(0, "aa") ;
map.put(1, "bb") ;
map.put(2, "cc") ;
System.out.print(semap.get(2)) ;
这也是允许的.
JadoNet 2007-10-30
  • 打赏
  • 举报
回复
1.5真强啊
JadoNet 2007-10-29
  • 打赏
  • 举报
回复
static Double § valueOf(String s) § 返回保持用参数字符串 s 表示的 double 值的 Double 对象。
____________________________________________________________

上面是我在1.5API 中COPY下来的。

double d = Double.valueOf("100");
是可以通过的,它等同于double d = Double.valueOf("100").doubleValue();

疑问????
晚上回家用1.5试试!
JadoNet 2007-10-29
  • 打赏
  • 举报
回复
怪了,难道我和楼主的机器一样的毛病?
我的double d = Double.valueOf("100"); 就不行!

Eclipse3.1 不行,
cmd直接编译也不行
ChDw 2007-10-29
  • 打赏
  • 举报
回复
因为JDK1.5做了自动转换

double d = Double.valueOf("100");
是可以通过的,它等同于double d = Double.valueOf("100").doubleValue();
flyonsea 2007-10-29
  • 打赏
  • 举报
回复
现在让我困惑的是,在我的机器上不行,在别人的机器上可以。纳闷阿。
hitzfc 2007-10-29
  • 打赏
  • 举报
回复
double d = Double.valueOf("100");
是可以编译过去的 我用的是Eclipse 3.2和JDK 1.5
好像没听说过Double对象不能直接给double赋值
JadoNet 2007-10-29
  • 打赏
  • 举报
回复
double d = Double.valueOf("100");//不行

Double d = Double.valueOf("100");//可以

Double.valueOf() 返回的是Object
——————————————————————————--
Map中的get(Object Key)
put(Object Key,Object Value)

WO我的是JDK 1.4
ChDw 2007-10-29
  • 打赏
  • 举报
回复
无论是第一还是第二个问题,其实都是JDK1.5上的自动封箱和拆箱问题


double d = Double.valueOf("100");
被【编译器】修改为了double d = Double.valueOf("100").doubleValue();


java.util.Map m = ...;
m.put(1, "");
m.get(2);

同样被【编译器】修改为了
map.put(Integer.valueOf(1), "");
map.get(Integer.valueOf(2));


这两个都是JDK1.5以后的编译器所提供的新功能
hxl_521 2007-10-29
  • 打赏
  • 举报
回复
问题搞的越来越糟,LZ的问题问的很明白:第一个是还是不是,第二个是否允许基础的数值类型和对应的对象可以直接转换.
回答这个就好了啊,研究那么深,只能是越来越复杂到回答不清楚!
LZ:Double对象是可以赋值的,第二个也是允许地!不过,要注意两个转换对象的范围!
胡矣 2007-10-29
  • 打赏
  • 举报
回复
1.答:
5.0里重载了valueOf方法.
public static Double valueOf(String string) throws NumberFormatException {
return new Double(FloatingDecimal.readJavaFormatString(string)
.doubleValue());
}

public static Double valueOf(double d) {
return new Double(d);
}


可能是你的编译是按照5.0版本以下编译的.
找到 项目 右键-->properties-->java compiler-->enable project specific settings-->compiler compliance level-->5.0

2.答:
Map中的get(Object Key)
put(Object Key,Object Value)

oldabc 2007-10-29
  • 打赏
  • 举报
回复
第2题 根据JAVA编程思想书上EG:
你可以自己试验下.
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

class A{
int i;
A(int i){
i=1;
}
public String toString(){
return Integer.toString(i);
}
}
public class gap1{
private static Random x=new Random();//随机数类
public static void main(String[] args){
Map mp3=new HashMap();//Map 不能保存基本类型,只能保存对象应用。
for(int i=0;i<5000;i++){
Integer y=new Integer(x.nextInt(12));
if(mp3.containsKey(y))//containsKey 是检查 Y的键是否在容器中了。
((A)mp3.get(y)).i++;
else
mp3.put(y,new A(i));
}

System.out.print(mp3);

}
}
更好帮助理解第个问题.
zxphwz 2007-10-29
  • 打赏
  • 举报
回复
我的JDK是1.5,如果这样的话 double d = Double.valueOf("100");
编译不能通过
因为public static Double valueOf(String s)
throws NumberFormatException
返回的是Double对象,而double是一种数据类型,两者是不能兼容的,
所以要想输出结果只能这样:
Double d =Double.valueOf("100");
System.out.println(d.toString());
flyonsea 2007-10-29
  • 打赏
  • 举报
回复
问题是我是1.5,甚至1.6都试了阿。
当然,我之前并不知道1.5增加了自动打包,自动解包的机制。算是学到了。
xiyuan1999 2007-10-29
  • 打赏
  • 举报
回复
ls 的各位 、

都说了
JDK5增加了自动打包(auto-boxing)和自动解包(un-boxing)机制

在JDK5以下的版本不可以通过的
xiyuan1999 2007-10-29
  • 打赏
  • 举报
回复
自动打包(auto-boxing)和自动解包(un-boxing)
加载更多回复(3)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧