数组

1、数组的定义

数组是用来存储同一类型若干数据的容器。数组是一种引用数据类型

数组定义语法:

数据类型[]  数组名 = new  数据类型[长度]; (建议用这种)

或者:数据类型  数组名[] = new  数据类型[长度];

如:int [] data1 = new int[50];   //定义数组存储50个整型的数据

double[] data2 = new double[40];  //定义数组存储40个小数

char[] data3 = new char[20];    //定义数组存储20个字符

boolean[] data4 = new boolean[30]; //定义数组存储30个布尔值

String[] data5 = new String[10];    //定义数组存储10String字符串,初始化 data5[i] = null

Student[] data6 = new Student[60];  //定义数组存储60Student对象,初始化 data6[i] = null

new运算符在堆中分配一块连续的存储空间,这块连续存储空间可以存储5int类型的数据,把这块存储空间的引用(起始地址)赋值给数组名 data,data数组名存储的是堆中数组的起始地址。

2、访问数组元素

通过索引值(下标)来访问数组元素,格式:数组名[索引值] = 值 ;

如:int[] data = new int[3]; 

data[0] = 123; data[1] = 456; data[2] = 789;

data[3] = 123; //运行后会产生 java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常

遍历数组

for( int i = 0 ; i < data.length ; i++ ){
    System.out.println( data[i] + "\t");
}
//或者用foreach循环
for( int aa : data2 ){
    System.out.println( aa );
}

定义了数组之后 ,系统会给数组元素默认初始化

数据类型 默认初始值
整型(byte、short、int、long) 0
浮点型(float、double) 0.0
字符型char 空 '\u0000'
String null
布尔Boolean false
引用数据类型(类、接口) null

数组的动态初始化先定义数组,再给数组的元素赋值

如:int [] a = new Int[2]; a[0] = 1; a[1] = 2;

数组的静态初始化在定义数组的同时就给数组的元素赋值

如:int [] data3 = {1,2,3,4,5,6};

数组名之间可以相互赋值

3、数组扩容

数组扩容其实就是定义一个更大的数组,把原来数组中的元素复制到新数组中,让原来的数组名指向新的数组。

复制代码
public class ArrayExpansion {
    public static void main(String[] args) {
        int [] data = {34,12,56,87,66};
//1)定义一个更大的数组
     //int [] newdata = new  int[ data.length + 1 ];   //新数组只比原来数组长度大1个
     //int [] newdata = new  int[ data.length * 2 ];   //新数组长度是原来数组长度的两倍
        int [] newdata = new  int[ data.length  + (data.length / 2) ];   //新数组长度是原来数组长度的1.5倍
//2)把原来数组的内容复制到新数组中
        for(int i = 0 ; i < data.length; i++) { newdata[i] = data[i]; }
//3)让原来的数组名指向新的数组
        data = newdata;
//4)打印data数组中的元素
        for (int a : data) { System.out.print(a+"\t"); }
    }
}
执行结果:34    12    56    87    66    0    0    
复制代码

向数组中插入元素

复制代码
publicclass ArrayExpansion {
    publicstaticvoid main(String[] args) {
        int[] data = {45, 12, 78, 56, 90, 55};
        int[] d = insert(data,2,20);    //在下标2位置插入数值20for (int a : d) { System.out.print(a+"\t"); } //打印数组中的元素
    }
    //给数组data下标i 位置插入一个 key值    publicstaticint[] insert(int[] data, int i, int key) {
        int[] newdata = newint[data.length + 1];
        for (int j = 0; j < i; j++) { newdata[j] = data[j]; } //复制[0,i)部分
        newdata[i] = key; //插入新元素
        for (int j = i; j < data.length; j++) { newdata[j+1] = data[j]; } //复制[i+1,data.length)部分
        data = newdata;
        return data;
    }
}
输出结果:45 12 20 78 56 90 55 
复制代码

 

posted @   鹿先森JIAN  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示