当前位置: 移动技术网 > IT编程>开发语言>Java > Java数组

Java数组

2018年11月16日  | 移动技术网IT编程  | 我要评论

冯媛甄未婚夫,张忆芬,吴亦凡失踪

java——数组

1.数组概述

  数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致。数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据类型。数组分为:一维数组和二维数组

2.一维数组

  1.格式

    格式1:数据类型[] 数组名;

       格式2:数据类型 数组名[];

    type var [ ] ; 或 type [ ] var ;

    注意:这两种定义做完了,数组中是没有元素值的。所以必须初始化。

  2.初始化概述

    所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

    初始化分类:动态初始化和静态初始化。

  3.初始化方式

    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

    静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    1)动态初始化格式

       

    2)静态初始化格式

       

    3)在内存中的分配

       

      一维数组初始化后在内存中的分配图:

         

3.二维数组

  1.概述

    其实二维数组其实就是一个元素为一维数组的数组。

  2.格式

           

  3.举例

      int a[][] = newint [3][];

    a[0] = new int [2];

    a[1] = new int [4];

    a[2] = new int [3];

   图解如下:

       

      以二维数组为例,其实二维数组就相当于数组中包含数组,所以在声明的时候要先声明第一维度,如下:

      a[0] = new int [2];    相当于给第一个包含在内的数组声明了两个小格的内存,

      a[1] = new int [4];    相当于给第二个包含在内的数组声明了四个小格的内存,

      a[2] = new int [3];    相当于给第三个包含在内的数组声明了三个小格的内存,

      理解了二维数组的概念应该就能理解多维的概念

 

  4.二维数组的初识化   

      • 静态初始化:     int inta[][] = {{1,2},{3,4},{7,8,9}};
      • 动态初始化:
      • int a[][] = new int [3] [5];
        int b[][] = new int [3][];
        b[0] = new int [2];
        b[1] = new int [3];
        b[2] = new int [5];

  5.二维数组举例  

4.数组的拷贝

  使用java.lang.system类的静态方法:

public static void arraycopy(object src,int srcpos,object dest,int destpos,int lenth)
  • 可以同于数组src从第srcpos项元素开始的lenth个元素拷贝到目标数组从destpos项开始的length个位置
  • 如果源数据数目超过目标数组边界会抛出indexoutofbpundsexception异常
  • 需要注意的是,修改拷贝后的数组,源数组的值也会跟着改变,因为copy后的数组和源数组在内存空间指向的是同一地址,可以参考后面的例子来理解这句话

  publicclass test {

public static void main(string[] args){
        //一维数组的拷贝
        string[] s = {"mircosoft","ibm","sun","oracle","apple"};
        string[] sbak = new string[6];
        system.arraycopy(s, 0, sbak, 0, s.length);
    
        for(int i=0;i<sbak.length;i++){
            system.out.print(sbak[i]+" ");
        }
        system.out.println();
        for(int i=0;i<s.length;i++){
            system.out.print(s[i]+" ");
        }
        system.out.println();
        //二维数组的拷贝
        int [][] intarray = {{1,2},{1,2,3},{3,4}};
        int [][] intarraybak = new int[3][];
        system.arraycopy(intarray, 0, intarraybak, 0, intarray.length);
        intarraybak[2][1] = 100;
        for(int i = 0;i<intarray.length;i++) {
            for(int j=0;j<intarray[i].length;j++) {
                system.out.print(intarray[i][j]+"     ");
            }
            system.out.println();
        }
    }
}

  再看一个例子:
  
public class test {
    public static void main(string[] args) {       
        int a[] = {1,2,3,4};
        int b[] = {4,2,3,5,6};
        int c[];
        int c1[];
        //相当于数组扩充,观察c1和c2的输出来参考这个函数的使用方式
        c = arrays.copyof(b, a.length + b.length);
        c1 = arrays.copyof(a, a.length + b.length);
        system.out.println("c = " + arrays.tostring(c));
        system.out.println("c1 = " + arrays.tostring(c1));
        //数组拷贝
        system.arraycopy(b, 0, c, a.length, b.length);
        system.out.println("c = " + arrays.tostring(c));       
        system.out.println("a = " + arrays.tostring(a));
        system.out.println("b = " 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网