黑马程序员技术交流社区

标题: 定义数组 [打印本页]

作者: 陈世伟    时间: 2012-4-15 15:54
标题: 定义数组
int[] score= new int[5];

在这里为什么要加个new,new代表什么意思,如果不加new可以吗?
作者: 胡杰震    时间: 2012-4-15 16:40
表示初始化数组,这里不加不可以!
作者: 余晓亮    时间: 2012-4-15 17:03
不加 语法错误
作者: 过客    时间: 2012-4-15 17:19
因为数组属于引用数据类型,它在内存中都是以堆栈的形式存储的,就像new了一个类 的对象。如果没有new
可以直接赋值:int[] score={num1,num2,num3};
作者: 余耀明    时间: 2012-4-15 17:20
java中数组是引用型数据类型,引用型数据类型类型,首先定义,再在堆空间中new出来(申请大内存空间),例如:上面的 score是局部变量在栈空间申请一个小内存,里面装的是一个地址,指向new出来的一块堆空间。这像C语言中的指针,只是java中是隐性的。
作者: 孙杰    时间: 2012-4-15 23:00
数组是引用类型,类也是引用类型 你使用时候也会new一个类
作者: 王雪磊    时间: 2012-4-16 09:56
就相当于实例化了一个对象,如果你知道具体数组的长度可以不加的,比如
int[]  score={2,3,4,5,6}
作者: 周健    时间: 2012-4-16 13:47
new代表实列化对象,不加不行,除非你直接定义数组的长度
作者: 郭青松    时间: 2012-4-17 00:44
因为数组的实例是放在内存堆(heap)上的,只要是放在内存堆上的数据,就必须使用new
关键字在堆上开辟一个空间,这是c#中的一个语法规定。
根本就不存在说 可以不加new关键字的这种说法。
不管你是用哪种方式申明数组,
int[] intarr = new int[2];
int[] intarr = new int[]{1,2};
iint[] intarr = new int[2]{1,2};
int[] intarr = {1,2};

都会调用new关键字,最后一种,表面上没有使用new 那是因为程序在后台已经帮你实现
了new这个关键字了。
作者: 谢栋文    时间: 2012-4-17 07:26
数组的4种声明方式:
数据类型[] 数组名=new 数据类型[数组大小];
数据类型[] 数组名=new 数据类型[数组大小]{值1,值2。。。。};
数据类型[] 数组名=new 数据类型[]{值1,值2,值3。。。。};
数据类型[] 数组名=new 数据类型[]{};//注意这里声明的数组,长度为0,空值。

作者: 谢栋文    时间: 2012-4-17 07:28
还有一种
数据类型[] 数组名={值1,值2,值3。。。。};这是直接给数组赋值
作者: 许庭洲    时间: 2012-4-27 16:27
int[] score= new int[5];  此语句中new是在内存为数组开辟一段空间,若不加new,可能在内存找不到score数组,希望对你有帮助哦!
作者: 错,谁的错丶    时间: 2012-4-30 23:16
用于创建对象和调用的构造函数。
作者: 黑马王刚    时间: 2012-5-1 00:55
用来给数组分配空间。
作者: 胡博    时间: 2012-5-2 22:15
数组是类型,通过new来实例化一个数组对象,并在堆中分配空间。数组是引用类型。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2