A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘宁 中级黑马   /  2012-3-20 16:47  /  3513 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int[] arr = {1,24,5,56,7,8,8};
上边的是已知的数组,那么怎么建立未知长度的数组哪?
int[] arr = new int[x];
这样可以吗?或许这个问题比较简单吧,但是我就是迷在这出不去了。我在求数组中的最大值时遇到的,已知的我会做,但是未知的不知道怎么表达了。求教。

16 个回复

倒序浏览
数组的长度是固定的。
集合的长度可以改变。
回复 使用道具 举报
数组的定义一种是想int[] arr = {1,24,5,56,7,8,8};这样,定义的时候就把值给定了;
一种是 int[] arr = new int[x];
把数组的长度固定,
然后通过arr [数组角标] = 数组角标对应的值;
想楼主说的那个可以但是必须保证X是个数值就行。
回复 使用道具 举报
冯建鹏 发表于 2012-3-20 16:56
数组的定义一种是想int[] arr = {1,24,5,56,7,8,8};这样,定义的时候就把值给定了;
一种是 int[] arr = ne ...

怎么建立一个数组对象?
回复 使用道具 举报
其实可以把ArrayList当作动态数组  
用int[] 无法完成了
回复 使用道具 举报
我个人觉得:
你可以定义一个方法
static void newArray(int x){
        int[] arr = new int[x];
然后每次可以通过调用新建一个数组:
newArray(4);
newArray(5);
newArray(6);
newArray(7);
另外你可以用ArrayList,它是List 接口的大小可变数组的实现。可以实现未知长度的数组功能。
回复 使用道具 举报
冯建鹏 黑马帝 2012-3-20 17:04:05
7#
刘宁 发表于 2012-3-20 16:58
怎么建立一个数组对象?

int[] a;//声明数组
int[] a=new int[10];//创建数组是一个对象
//声明只是定义一个变量
//创建需要分配内存空间
回复 使用道具 举报
楼主可以尝试一下可变长度参数。
数组的长度一旦确定是不可以改变的啊。
下面是一个例子:
public class myMax {

        public static void main(String[] args) {
                myMax my= new myMax();
                my.getMax(1,2,3);//传的三个参数
                my.getMax(33,44);//两个参数一样可以

        }
public void getMax(int ... a)//使用的是可变长度参数
{
        int tem =a[0];
        for(int i=1;i<a.length;i++)
        {
                if(a[i]>tem)
                        tem=a[i];
        }
        System.out.println("max is :"+tem);
}
}
回复 使用道具 举报
李飞 中级黑马 2012-3-20 17:06:34
9#
1.   数组在定义的时候是必须指定长度的,如果不知道长度的话就用集合
2.   就算是集合,其实他的底层也是有一个一定长度的数组,只不过当集合长度超过底层定义的数组时,就会定义另外一个数组,把原来的集合元素复制到新的数组中,只不过这些我们看不到
3.   还有一种我个人的看法,可以看做是可变长度的数组,就是可变参数,只是你要说定义一个可变参数,就没法了

像你第二种情况,也必须刚开始给x一个确定的值,然后,你后面再改动x值得话,你会发现数组的长度并没有改变
回复 使用道具 举报
JAVA中是要对数组确定大小的,只有在得到这个数组长度的时候才能创建一个数组,否则就是你在定义的时候就对它赋值,例如 int[] arr = {1,24,5,56,7,8,8};
回复 使用道具 举报
周建 黑马帝 2012-3-20 17:39:05
11#
public void methd(final int num){ int[] arr = new arr[num]; }楼主试试这个方法吧
回复 使用道具 举报
冯建鹏 发表于 2012-3-20 17:04
int[] a;//声明数组
int[] a=new int[10];//创建数组是一个对象
//声明只是定义一个变量

我想建立的是未知长度的数组。。。
回复 使用道具 举报
刘宁 发表于 2012-3-20 17:46
我想建立的是未知长度的数组。。。

好像真的没有数组的长度是未知的吧,不过集合可以 因为集合的长度是可变化的。
回复 使用道具 举报
{:soso_e177:}
回复 使用道具 举报
周建 黑马帝 2012-3-21 12:01:34
15#
class Test
{
        public static void main(String[] args)
        {
                int[] arr;
                arr = methd(12);
                System.out.println(arr.length);
        }
        public static int[] methd(int num){
                 int[] arr = new int[num];
                 return arr;
        }

}
回复 使用道具 举报
数组的初始化有:静态初始化和动态初始化,
int[] arr = {1,24,5,56,7,8,8};是静态初始化,显示指定每个数组元素的值,由系统决定数组的长度。
int[] arr = new int[x];是动态初始化,只指定数组的长度,由系统为每个元素指定初始值,如果x的值不确定,可以定义方法,在一个方法中传递一个参数去指定x的值。
如,
public class DynamicArray {
     public static void main(String[] args) {
             int x = 4;
             int[] arr = newArray(x);
             
             for(int i =0;i<arr.length;i++){
                     arr[i] = i;
                     System.out.println(arr[i]);
             }
        }          
        public static int[]  newArray(int x){         
                int[] arr = new int[x];
                return arr;
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马