java动态创建数组,JAVA如何创建数组?

TheDisguiser 2020-06-16 20:57:05 java常见问答 3175

小伙伴们都知道数组吧,就算是新学习java的小伙伴应该也知道,那你们知道该如何动态创建数组吗?下面就跟小编来看看如何动态创建数组吧。

java数组创建

示例:

import java.util.Scanner;
//声明一个int型的数组,循环接收8个学生的成绩,
//计算这8个学生的总分及平均分。
public class Homework3
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        //声明数组
        int[] a = new int[8];
        //计算总分
        int sum = 0;
        //接收8个学生的成绩
        for (int i = 0; i < a.length; i++)
        {
            System.out.println("请输入成绩:");
            a[i] = input.nextInt();
            sum = sum + a[i];
        }
        System.out.println("总分:" + sum);
        System.out.println("平均分:" + sum / a.length);
    }
}

Java动态数组创建

示例:

package com.ct.array;
/** 
 * @author MoonMonster 
 * @version
 */
public class Array
{
    //数组中元素个数  
    private int count = 0;
    //初始容量大小  
    private int capcity = 16;
    //增量,每次增加的比例  
    private double increment = 1.2;
    //初始化数组  
    private Object[] src = new Object[capcity];
    public Array()
    {}
    //自定义原始数组大小  
    public Array(int capcity)
    {
        this.capcity = capcity;
    }
    // 增加  
    public void add(Object obj)
    {
        //判断是否越界,如是,则扩充数组  
        if (count >= src.length)
        {
            src = extend();
        }
        //将新增加的数据放在count处  
        src[count] = obj;
        count++;
    }
    // 对数组的扩充  
    private Object[] extend()
    {
        //扩充后的数组容量是旧的数组的increment倍  
        Object[] dest = new Object[(int)(src.length * increment)];
        for (int i = 0; i < src.length; i++)
        {
            dest[i] = src[i];
        }
        //返回扩充后的数组  
        return dest;
    }
    // 输出  
    public void print()
    {
        for (int i = 0; i < count; i++)
        {
            System.out.print(src[i] + " ");
        }
        System.out.println();
    }
    // 获得数组大小  
    public int size()
    {
        return count;
    }
    // 插入  
    public void insert(int index, Object obj)
    {
        if (count + 1 >= src.length)
        {
            src = extend();
        }
        //从最后一个元素开始,把前一个元素放到后一个位置来  
        for (int i = count; i > index; i--)
        {
            src[i] = src[i - 1];
        }
        //将要插入的元素放在index处  
        src[index] = obj;
        //在插入一个元素后,长度+1  
        count++;
    }
    //替换index处的数据  
    public void replace(int index, Object obj)
    {
        src[index] = obj;
    }
    //删除index处的数据元素  
    public void delete(int index)
    {
        for (int i = index; i < src.length - 1; i++)
        {
            src[i] = src[i + 1];
        }
        count--;
    }
    //返回index处的数据  
    public Object get(int index)
    {
        return src[index];
    }
}

测试:

package com.ct.array;
/**  
 * @author MoonMonster 
 * @version 
 */
public class Demo
{
    public static void main(String[] args)
    {
        Array arr = new Array();
        long t1 = System.currentTimeMillis();
        for (int i = 0; i < 10; i++)
        {
            arr.add(new Integer(i));
        }
        long t2 = System.currentTimeMillis();
        System.out.println("耗时: " + (t2 - t1));
        arr.insert(2, new Integer(123));
        //删除  
        arr.delete(0);
        //输出  
        arr.print();
        //数组长度  
        System.out.println("数组的长度为: " + arr.size());
    }
}

注明:

-在定义增量时,不要定义成一个固定的值,每次扩充一定比例。

-比例不是越大越好,也要考虑到内存问题,所以取个合适的值就行。

-在删除和增加等方法中,不要使用临时数组来保存数据,那样会耗时耗内存。

以上就是关于动态创建数组的所有内容了,更多数组相关java入门知识请持续关注本站了解详情吧。

推荐阅读:

java定义一个数组方法,java中的数组定义方式有哪些?

java动态数组实现要怎么编写?具体概念是什么?

java将一个数组逆序输出,java数组逆序的方法