+ -
当前位置:首页 → 问答吧 → java array 问题

java array 问题

时间:2013-11-17

来源:互联网

下面系条件 用one-dimensional array
Array name: dblScore
~Data type: double
~ Size: 10 elements
~ Values: un-initialized
我咁样写
public class Lab5 {
public static void main(String[] args) {
double[] array = new double [10];
System.out.println("Index/dblScore");
for( int i=0; i<array.length; i++)
System.out.println(i + "\t" + array );
}
}

但系output出
Index/dblScore
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
5 0.0
6 0.0
7 0.0
8 0.0
9 0.0
咁样咪唔符合Values: un-initialized

作者: yob664   发布时间: 2013-11-17

汪汪没有学过Java
只能用C++的知识回答

大概是因为new double [10]本身会做initialize
在标准C++中...new operator除了分配memory外..同时会做initialize
double数值的应该自动填0

不过一般在C++中...也未必会真的去做initialize

不过楼主系问Java
这都会是自动做了initialize

作者: Susan﹏汪汪   发布时间: 2013-11-17

引用:原帖由 Susan﹏汪汪 於 2013-10-19 01:00 AM 发表
在标准C++中...new operator除了分配memory外..同时会做initialize
double数值的应该自动填0

C++ 唔会喺 new double[x] 自动做初始。要初始要写成:new double[x]()。如果 new 嘅系一个类,咁就会呼叫相关建构式,如果无提供,好似 new Class,就会呼叫 Class 嘅预设建构式。

作者: fitcat   发布时间: 2013-11-17

引用:原帖由 fitcat 於 2013-10-19 12:52 PM 发表

C++ 唔会喺 new double[x] 自动做初始。要初始要写成:new double[x]()。如果 new 嘅系一个类,咁就会呼叫相关建构式,如果无提供,好似 new Class,就会呼叫 Class 嘅预设建构式。
不清楚
之前睇过好似话标准new运算符系会填0
但实作就是厂家问题
ideone系出0

VC++是没初始化的数字

[ 本帖最后由 Susan﹏汪汪 於 2013-10-19 03:48 PM 使用 编辑 ]

作者: Susan﹏汪汪   发布时间: 2013-11-17

引用:原帖由 Susan﹏汪汪 於 2013-10-19 03:15 PM 发表

不清楚
之前睇过好似话标准new运算符系会填0
但实作就是厂家问题
ideone系出0

VC++是没初始化的数字
ideone 出 0 系因为当时记忆体内容咁啱系 0。
你试下以下程式就知道:
复制内容到剪贴板代码:#include <cstdio>

int main() {
int *p = new int[10];
for (int i = 0; i < 10; ++i)
p[i] = i;
delete p;
p = new int[10];
for (int i = 0; i < 10; ++i)
printf("%d\n", p[i]);
}

作者: fitcat   发布时间: 2013-11-17

引用:原帖由 fitcat 於 2013-10-19 11:24 PM 发表
ideone 出 0 系因为当时记忆体内容咁啱系 0。
你试下以下程式就知道:#include

int main() {
int *p = new int[10];
for (int i = 0; i < 10; ++i)
p = i;
delete p;
p = new int[10];
for ...
知道了

作者: Susan﹏汪汪   发布时间: 2013-11-17