【JAVA】数组

 

 

1.数组初始化

    1.1动态初始化(声明并开辟数组)

      数据类型[] 数组名称 = new 数据类型 [长度]

      eg:

        int[] data = new int[5];声明并开辟一个整型数组。

      a.数组通过下表索引来取得元素,下标默认从0开始。数组下标超出数组长度,回报一个数组越界异常(运行时异常)。

      b.数组中每个元素都有默认值,并且默认值是该数据类型默认值。

      c.数组名称.length:取得数组长度

      d.数组遍历推荐使用for-each循环(仅限于数组内容读取),要修改数组内容,还是使用常规的for循环

      for-each循环:for(int x : data) {...}

      

int[] date = new int[5];
	date[0] = 1;
	date[1] = 2;
	for(int x:date){   //JDK1.5 提供for-each循环,遍历数组
		System.out.print(x+" ");
	}
	System.out.println();

      数组属于引用数据类型,必须在使用前先初始化。否则会NullpointerException(运行时异常)。

     

      引用传递:多个栈内存指向同一个堆内存。int[] temp = x;

      

        int[] date = new int[5];
        int[] temp = date;    //引用传递  c:int *tmp[] = &date;
	temp[2] = 50;
	System.out.println(date[2]);
//结果:50

   1.2数组静态初始化    ( 在数组定义时直接设置内容,根据值的个数确定数组长度,并且长度不可修改)

      简化格式:数据类型[] 数组名称 = {值,..,..}

      

      完整格式(推荐):数据类型[] 数组名称 = new 数据类型[]{值,...,...}

      eg:

       int data = new int{1,2,3,4,5};

      匿名数组--没有任何栈内存指向的数组。System.out.println(new int{1,2,3}[0]);

    

System.out.println("匿名数组"+(new int[]{1,2,3}[0]));
//结果:1

    1.3二维数组

      动态初始化:数据类型[][] 数组名称 = new 数据类型[行个数][列个数]

      eg:

        int[][] data = new int[3][4];   //开辟一个3行4列的整型数组

      静态初始化:数据类型[][] 数组名称 = new 数据类型[][]{{第一行的值},{第二行的值},...};

     

int[][] date2 = new int[][]
	{
		{1,2},{3,4,5},{6,7,8,9}
	};
	for(int x = 0;x<date2.length;x++){
		for(int y = 0;y < date2[x].length;y++){

			System.out.print(date2[x][y]+",");
		}
	}
//结果:1,2,3,4,5,6,7,8,9,

数组与方法的互操作---引用传递

方法接受数组

  

  public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+",");
        }
    }

方法返回数组

方法修改数组

 

2.java对数组的支持(应对笔试,可以直接调用)

2.1排序支持--java.util.Arrays.sort(数组名称);

   支持所有基本数据类型

   内部使用双轴快速排序

 public class demo2{
    public static  void main(String[] args){
         int[] data =  new int[]{1,2,5,8,7,6,3};
              
         Arrays.sort(data);
         printArray(data);
    }
    public static void printArray(int[] data){
        for(int temp : data){
            System.out.print(temp+",");
        }
    }
    
}

2.2数组的部分拷贝

   System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);

2.3数组全拷贝(*****)

java.util.Arrays.copyOf(源数组名称,新数组长度); int[]

 int[] data =  new int[]{1,2,3,4,5,6,7,8,9};
int[] temp = Arrays.copyOf(data,data.length+1);
//结果:1,2,3,4,5,6,7,8,9,0

  java动态数组扩容方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值