java的疑难问题,高手请进 我在写程序是写下如下一段代码:for(int i=0;i<19;i++) Double dou=new Double(i);在程序编译时居然没出错,对象dou不是被定义了十次吗怎么会不错呢?高手请指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是定义,更编译无关,而是在开辟了19个Double对象的空间,lz学什么的 其实我也不太懂...这是为什么啊?如果是 dou=new Double(i); 这就懂了,是十个对象.可是前面有Double 那不就是十个对象声明吗?为什么声明十次却没有错? 声明和定义的区别如下:在java中如果写成Double double 为声明写成Double double = new Double();为定义定义是给变量进行分配了内存,多看看书就知道了。 for(int i=0;i <19;i++) Double dou=new Double(i);就类似于{ Double dou = new Double(1);}//运行到这个右大括号时,dou被销毁了,随之new Double(1)所声明的对象也因为没有引用而被jvm当垃圾回收了。{ Double dou = new Double(2);}...... Java Language Specification里讲得很清楚,这属于非法的语法。 照六楼的思路,当执行完循环后dou就不可能存在有效的引用.但程序运行后dou保留的是最后的对象引用. LZ啊.下次题目写的不用这么霸道,也会有人回答的 呵呵1.6楼的思路 我很知道对不对.因为我确实也没见过这么写代码的.class A{}public class gap { public static void main(String[] arg){ A aa=new A(); A bb=new A(); System.out.print(aa); System.out.print(bb); }}这种情况 是可以的. 2.7楼说是非法语句.. 这个比较赞同. 由于这个语句是从一个程序上截取的.此语句后还有几条语句和上句在一个循环中.所以在测试时程序运行后dou每个对象的引用被保留下来.本人在八楼发的帖子太断章取义拉,特此纠正一下:照六楼的思路,当执行完循环后dou就不可能存在有效的引用.程序运行后dou不会保留最后的对象引用. for(int i=0;i <19;i++) Double dou=new Double(i); 循环一次创建一个对象,而且都是局部的,只能再循环里面使用下一次循环时上次创建的就被销毁了。。 java写一个txt阅读器 为什么scanner 抛出异常后就一直在这循环啊 新手问个eclipse的问题 如何打包程JAR的时候加入内存参数 java布局问题,急~~~100分 一个正则表达式的问题 龟兔赛跑的问题,急啊!! 不懂数据库能把JAVA学得很好吗? 程序员JAVA版还能出吗? 请问forte那里有得下,怎么csdn上所说的http://www.sun.com/forte/ffj/ce地址中找不到download url? 新手问个简单的问题??? 如何设置系统变量才可以在任何目录下都引用自定义包
如果是 dou=new Double(i);
这就懂了,是十个对象.可是前面有
Double
那不就是十个对象声明吗?为什么声明十次却没有错?
在java中如果写成Double double 为声明
写成Double double = new Double();为定义
定义是给变量进行分配了内存,多看看书就知道了。
Double dou=new Double(i);就类似于
{
Double dou = new Double(1);
}
//运行到这个右大括号时,dou被销毁了,随之new Double(1)所声明的对象也因为没有引用而被jvm当垃圾回收了。{
Double dou = new Double(2);
}......
6楼的思路 我很知道对不对.因为我确实也没见过这么写代码的.
class A{}
public class gap { public static void main(String[] arg){
A aa=new A();
A bb=new A();
System.out.print(aa);
System.out.print(bb);
}
}这种情况 是可以的.
2.
7楼说是非法语句.. 这个比较赞同.
照六楼的思路,当执行完循环后dou就不可能存在有效的引用.程序运行后dou不会保留最后的对象引用.
Double dou=new Double(i);
循环一次创建一个对象,而且都是局部的,只能再循环里面使用
下一次循环时上次创建的就被销毁了。。