为何声明数组要new一下

2025-05-07 20:27:02

社区

Java SE 帖子详情 为何声明数组要new一下 lllovett 2008-10-10 03:50:23 在创建类的对象的时候就是给其分配内存 ,为何在类里面建立数组时还要new 下 ,它为什么不能向其它变量一样。请问这有何好处

...全文

293 16 打赏 收藏 为何声明数组要new一下 在创建类的对象的时候就是给其分配内存 ,为何在类里面建立数组时还要new 下 ,它为什么不能向其它变量一样。请问这有何好处 复制链接

扫一扫 分享 转发到动态 举报

写回复 配置赞助广告取 消

确 定

用AI写文章 16 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 z收获 2008-10-17 打赏举报 回复 嘻嘻,学到了知识,感谢各位精彩的回答!! coder 2008-10-17 打赏举报 回复 数组是对象 ZXEOC 2008-10-10 打赏举报 回复 很简单,如果生成对象的时候就给它的成员数组(或者其他对象类型的成员变量)分配一个空间,那么分配多大空间?这个对象类型变量内部的数据如何初始化?这些很难找到合适的默认值,即便找到了,或许用户根本不需要这些值,或许用户很快就要修改这些值,那么前面分配空间和赋值的工作都是无意义的,而且浪费时空资源。 basin_yi 2008-10-10 打赏举报 回复 String b=new String("abc");

引用变量b指向一个String型对象,且对象存在堆里面~你可以看看java的空间分配

当然这样的定义方式与String b="abc";有区别的

jvm的工作也会有不同 一般般帅的男人 2008-10-10 打赏举报 回复 [Quote=引用 6 楼 lllovett 的回复:]

那为何不直接在创建类的对象时候给它空间,为何要单独分配。

到底有何好处

[/Quote]

呵呵.楼主你创建类的时候是不分配空间的.要使用此类对象时必须要new一下,给此类对象分配了空间才能使用.当类和数组放在一起的时候,数组是类的一个属性.就好比一个人,他的衣服就是他的一个属性.衣服当然可以有自己的颜色,形状,所以数组作为类的一个属性时,当然可以有自己的空间.好处就是'合理,灵活,要用的时候才分配空间'.

不知这样说,有没有帮到楼主理解哈 jcyan 2008-10-10 打赏举报 回复 个人感觉没啥好处,只不过体现了java万物皆对象的理念,从来只用List ojekleen 2008-10-10 打赏举报 回复 声明和初始化是不区别的,声明仅一个变量声明一个指针,却没有指向内存地址,初始化后指针就知道指向的内存地址

你所谓的创建类的对象时候,其实就是初始化,初始化对象的方法即new .... mayuanfei 2008-10-10 打赏举报 回复 数组只有在New之后才在内存分配一个连续的内存空间。 cellia 2008-10-10 打赏举报 回复 [Quote=引用 4 楼 ZangXT 的回复:]

引用 2 楼 cellia 的回复:

在java里,数组是作为对象使用的

记得有种说法,除了八种基本数据类型外都需要new一下才能用的

String和基本类型的直接初始化的数组是个特殊的地方.可以不用new

[/Quote]

谢谢提醒哦,String是比较特殊的一个东西

其实楼主没必要钻牛角尖,除非是要研究底层的东西,不然把数组看做对象就成,跟对象一样,要用就需要new来分配空间 lllovett 2008-10-10 打赏举报 回复 那为何不直接在创建类的对象时候给它空间,为何要单独分配。

到底有何好处 一般般帅的男人 2008-10-10 打赏举报 回复 数组也是对象,对象只有给它分配了'空间'才能使用,而new一下就是帮对象分配'空间',对象拥有了空间才是一个实体,才可以正常使用. cydp007 2008-10-10 打赏举报 回复 数组需要new几个格子出来..把对象放进去.. lllovett 2008-10-10 打赏举报 回复 。。。 能解释具体点不 我也知道数组是对象类型 ZangXT 2008-10-10 打赏举报 回复 [Quote=引用 2 楼 cellia 的回复:]

在java里,数组是作为对象使用的

记得有种说法,除了八种基本数据类型外都需要new一下才能用的

[/Quote]

String和基本类型的直接初始化的数组是个特殊的地方.可以不用new cellia 2008-10-10 打赏举报 回复 在java里,数组是作为对象使用的

记得有种说法,除了八种基本数据类型外都需要new一下才能用的

baggiowd 2008-10-10 打赏举报 回复 因为数组是个对象,不是基本数据类型。

好处就是体现了java的万物皆对象吧。。。。 java中为什么开辟数组而要new一下? 参考java 里面为什么数组都需要new一上 - 豆丁网

java数组所引用的值在堆中,C是除了malloc的在堆中,而正常使用是在栈中的。

java数组是引用对象,引用对象都需要开辟内存空间,这一点与C相同。

new这个关键字在java中是实例化对象,也为对象开辟了内存空间。

java中,int[] arr = {};这是个空数组,有几个就开辟几个空间,而C声明时可以指定大小,写在[]中

总结一下:java中的对象是在堆中的,所以如果不new一下,是得不到这块空间的。

而在C中... Java中如何声明数组 Java语言声明数组有两种形式,以一维数组为例:

数组类型 数组名 []; 这种方式是C语言书写习惯

数组类型 [] 数组名; 这种方式是Java书写习惯

数组的声明方法:

数组类型 [] 数组名 = {em1,em2,em3,…,emN};//声明数组的时候初始化,一共N个元素,例如:

int[] array = {3,5,4,8,12,5};//一共六个元素

数组类型[] 数组名 = n javascript中声明数组 声明数组的三种方式

var arr=new Array();//声明一个空数组对象

var arr=new Array(length)//声明一个指定长度的数组

var arr=[元素]//声明数组(最常用);

!!!注意:js中的数组声明不用指定长度,js的数组长度是不固定的,会随着元素的数量改变而改变。

数组的赋值和取值

数组可以存储... C++中使用new动态声明二维数组的方式 C++中动态二维数组的声明方式

在C/C++中定义动态数组时我们都很熟悉使用的是 new 关键字,基本语法如下:

typeName *arrayName = new typeName[arraySize];

比如若想通过输入的 n 来创建一个数组大小为 n 的 int 型数组时,可以这样写:

cin >> n;

int *a = new int[n];

通过上面这个语句我们在内存地址中分配了一片 int[n] 大小的内存空间,并将其首地址赋值给了 a ,在这里 a 是 int* 类型的指针变 5.2 C# 数组声明与初始化全解 声明数组的基本语法数据类型[] 数组名;声明一维数组的两种格式格式1:声明但不初始化,随后使用new关键字分配内存。格式2:声明并初始化,可以使用new关键字或省略new关键字。这些语法格式帮助你在C#中灵活地声明和初始化一维数组,为后续的操作打下基础。声明并初始化数组使用new数据类型[] 数组名 = new 数据类型[数组长度] { 元素列表 };省略new数据类型[] 数组名 = { 元素列表 };声明后初始化数组使用new数据类型[] 数组名;

Java SE

62,636

社区成员

307,271

社区内容

发帖 与我相关 我的任务 Java SE Java 2 Standard Edition 复制链接

扫一扫 分享 确定 社区描述 Java 2 Standard Edition 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章