Java中的数组和C语言中的数组有何异同? 好象听说是有些不一样,请高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一些不一样。对于原语类型的数组,如int[] a,在C里面只要这样定义之后就可以用a[i]使用了,但是在JAVA里面是不行的,必须用int[] a = new int[LENGTH];来为数组分配空间。这里的a更应该看成C里面的指针,它和C里面的int* a是一样的,因为这个a(C里面的)也要先malloc一个空间之后才可以用。对于对象数组,则要“两次分配”,如:Object[] obj = new Object[2];obj[0] = new Object();obj[1] = new Object();因为数组首先是一个句柄,而这个句柄指向的2个空间里面又是存储着两个指向Object类型的句柄。而C里面不完全相同:struct Object{};struct Object* obj = (struct Object *)malloc(2 * sizeof(struct Object));其实他们的原理大至是相同的。只不过JAVA里数组的内存分配是在堆里面的,必须用new 来分配,而C里面是在栈里面分配的,定义的时候会自动分配。在《Thinking in JAVA》中有更详细的介绍。 C里面数组可以越界操作,java里面进行强制检查了的,减少了出错的几率 java里的是对象的引用 c 里就是对象JAVA里数组的内存分配是在堆里面的 一个小问题,希望大家能帮帮初学者 急!!关于ftp shell下载文件问题,在这里问下 数组传值问题 如何发布java程序? 想得头发都白了 关于接口代码 的提问 请问java现在的xml技术有那些,有什么好api,库等? [求助]一段简单代码,大家帮我看看那里有问题? 可否将网页文件的源代码作为String一次性读入吗? servlet 调用java类时报错,jar包都导入了! SQLite的Java中午问题:我用java存取SQLite,有中文的出现乱码 三个问题
对于原语类型的数组,如int[] a,在C里面只要这样定义之后就可以用a[i]使用了,但是在JAVA里面是不行的,必须用int[] a = new int[LENGTH];来为数组分配空间。这里的a更应该看成C里面的指针,它和C里面的int* a是一样的,因为这个a(C里面的)也要先malloc一个空间之后才可以用。
对于对象数组,则要“两次分配”,如:
Object[] obj = new Object[2];
obj[0] = new Object();
obj[1] = new Object();
因为数组首先是一个句柄,而这个句柄指向的2个空间里面又是存储着两个指向Object类型的句柄。
而C里面不完全相同:
struct Object{};
struct Object* obj = (struct Object *)malloc(2 * sizeof(struct Object));其实他们的原理大至是相同的。只不过JAVA里数组的内存分配是在堆里面的,必须用new 来分配,而C里面是在栈里面分配的,定义的时候会自动分配。
在《Thinking in JAVA》中有更详细的介绍。
java里面进行强制检查了的,减少了出错的几率
JAVA里数组的内存分配是在堆里面的