问题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)也是被允许的么?
总结下来,问题似乎就是基础的数值类型和对应的对象可以直接转换么?我已经糊涂了请明白人解答。万分感谢。
这句能通过编译么?
在我的机器上不行,环境是MyEclipse 5.1.0 JDK1.5,1.6都试过,J2EE 1.4
在别人的机器上可以。
一直以来我都以为Double对象是不能直接给double赋值的。难道我一直都错了?问题2, Map对象的get,put方法。get(1)来取值是被允许的么?put(1,someObject)也是被允许的么?
总结下来,问题似乎就是基础的数值类型和对应的对象可以直接转换么?我已经糊涂了请明白人解答。万分感谢。
解决方案 »
- 是否能用instanceof来判断通过反射机制获取到的Field,如果可以怎么判断呢
- import 包名.类名和import 包名.*的区别
- ☆关于动画的清除背景和双缓冲的问题☆
- ByteArrayInputStream 遇到的问题:类型转换
- Java抓取数据包出错
- java有没办法实现类似c++的protect,private继承方式?
- java 高级的学习资料?
- 救命!这是怎么回是!请高手帮我看看!
- 队列的问题,请高手指点
- 寻求java程序员和IBM大机人员,可以到新加坡工作.有意者请致函[email protected]
- 请问一个时间处理得类
- 怎样看懂项目中的所有程序(主要是类和接口)之间的关系?
——————————————————————————--
Map中的get(Object Key)
put(Object Key,Object Value)WO我的是JDK 1.4
是可以编译过去的 我用的是Eclipse 3.2和JDK 1.5
好像没听说过Double对象不能直接给double赋值
是可以通过的,它等同于double d = Double.valueOf("100").doubleValue();
我的double d = Double.valueOf("100"); 就不行!Eclipse3.1 不行,
cmd直接编译也不行
____________________________________________________________上面是我在1.5API 中COPY下来的。double d = Double.valueOf("100");
是可以通过的,它等同于double d = Double.valueOf("100").doubleValue();疑问????
晚上回家用1.5试试!
double d = Double.valueOf("100");
是可以通过的
但是JDK5以下的版本不可以通过的
public class gap1{
public static void main(String[] arg){
Double d = Double.valueOf("100");
System.out.print(d);
}
}
我用的是Eclipse3.1..JDK1.4..输出结果为100.0valueOf
public static Double valueOf(double d)返回表示指定的 double 值的 Double 实例。如果不需要新的 Double 实例,则通常应该优先采用此方法,而不是使用构造方法 Double(double),因为该方法很可能通过缓存经常请求的值来显著提高空间和时间性能。
参数:
d - 一个 double 值。
返回:
表示 d 的 Double 实例。
从以下版本开始:
1.5 "一直以来我都以为Double对象是不能直接给double赋值的。"这句话是什么意思啊? 这个方法以及功能说了 参数是一个数值 而这个方法是返回表示这个参数Double类型的引用对象.和你这句话有点出入.
JDK5增加了自动打包(auto-boxing)和自动解包(un-boxing)机制在JDK5以下的版本不可以通过的
编译不能通过
因为public static Double valueOf(String s)
throws NumberFormatException
返回的是Double对象,而double是一种数据类型,两者是不能兼容的,
所以要想输出结果只能这样:
Double d =Double.valueOf("100");
System.out.println(d.toString());
你可以自己试验下.
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); }
}
更好帮助理解第个问题.
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.02.答:
Map中的get(Object Key)
put(Object Key,Object Value)
回答这个就好了啊,研究那么深,只能是越来越复杂到回答不清楚!
LZ:Double对象是可以赋值的,第二个也是允许地!不过,要注意两个转换对象的范围!
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以后的编译器所提供的新功能
System.out.print(d) ;
这个是可以通过的;
===================
2.map.put(0, "aa") ;
map.put(1, "bb") ;
map.put(2, "cc") ;
System.out.print(semap.get(2)) ;
这也是允许的.
就是 编译输出 的版本 和 jre lib 版本设置的问题
有那么复杂吗
也要看IDE里设置的JDK版本