数组 及拷贝

数组

  • 概念:

    • 指一组同类型的数据,有序的排列

    • 在java中就是一种引用数据类型

    • 同一个数组只能拥有同类型的数据,可以是引用数据类型,也可以是基本数据类型

    • 数组就是一个容器,是java中作为数据的容器中最基本的一种。

    • 数组的类型就是里面存放的数据的类型

    • 数组在内存中是连续的。

    • 在这里插入图片描述

    • 数组的长度是确定的,一旦创建,就不能改变了

    • 数组有一个只读属性,length用来获取数组的长度str.length(),arr.length;

    • 下标(索引),通过索引获取数组中的数据。下标是从0开始。arr[2]

    • 元素:数组中的数据称为元素。

  • 声明

    • int[] arr = new int[length];
    • int brr [] = new int[5];//动态初始化
    • 数组声明后都是有默认值的。
    • 基本数据类型的数组,每个元素的默认值就是该基本数据类型的默认值。
    • 引用数据类型的数组,每个元素的默认值是null。
    • int [] crr = {2,5,1,0};//静态初始化
    • int [] drr = new int[] {2,5};
  • 数组的遍历

    • 挨个检索数组中元素;
    • 普通for循环遍历for (int i = 0;i < arr.length;i++) {arr[i]};
    • 增强for循环for(int a:arr) {a}
    • 增强for不能用来修改数组的值。
  • 注意

    • ArrayIndexOutOfBoundsException:数组下标越界异常;

      int[] arr = new int[10];
      		int brr[] = new int[5];
      		int [] crr = {1,10,25,30};//静态初始化
      		System.out.println(crr.length);
      		int [] drr = new int[] {3,5};//drr[0] drr[1] drr[2]
      		arr[0]=1;//动态初始化
      		arr[1]=2;
      		arr[2]=3;
      		System.out.println(arr[1]);
      		char[] arrs = new char[26];
      		char c = 'A';
      		for (int i = 0;i<arrs.length;i++) {
      			arrs[i] = c;
      			c++;
      		}
      		for (int i = 0;i < arrs.length;i++) {
      			System.out.println("下标为:"+i);
      			System.out.println(arrs[i]);
      		}
      		arrs[25] = 'z';
      		for (char c1:arrs) {
      			System.out.println(c1);
      		}
      		
      		String[] strs = new String[3];//""  null
      		
      		char [] brrs = arrs;
      		brrs[1]='@';
      		System.out.println(arrs[1]+"sfddsfsfdsdfsfs");//B @
      		for (char c2:brrs) {
      			System.out.println(c2);
      		}
      		
      		
      		int a = 3;
      		int b = a;
      		System.out.println(b);
      		String str1 = "abc";
      		String str2 = str1;
      		System.out.println(str2);
      
  • 数组内存图

    在这里插入图片描述

  • 数组之间赋值

    在这里插入图片描述

    • System.arraycopy(arr,inedx1,brr,index2,length)

    • arr:原数组

    • brr:目标数组

    • index1:原数组的起始位置

    • index2:目标数组的起始位置

    • length:复制的长度,元素个数

    • Arrays.copyOf(names, names.length+``1``);
       // 数组的扩容
      // copyOf
      // 第一个参数:原数组(拷贝)
      // 第二个参数:扩容之后的长度
      
      public class Demo04 {
      	public static void main(String[]args) {
      		int [] arr = {1,2,3,4,5};
      		int [] brr = new int[10];//0 4
       		System.arraycopy(arr,2,brr,7,3);
      		for (int i:brr) {
      			System.out.println(i);
      		}
      		for (int i = 0;i<arr.length;i+=2) {
      			brr[i]=arr[i];
      		}
      	}
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值