数组

数组:
1.概念:一组相同类型的数据的组合
数组也是一种类型(引用类型之一)
2.无具体名字,可放很多类型,与存放的数据的类型有关
如:存放一组int类型的数据
数组名称 int[]

  存放一组字符串数据
  数组名称  String[]

  存放一组Scanner类型的数据
  数组名称   Scanner[]

  存放一组字符类型的数据
  数组名称  char[]

3.元素的概念
数组中的每个数据,都是这个数值的元素
4.数组的声明与初始化
声明:元素类型[] 变量名; int[] chs =
元素类型[] 变量名[];不建议此写法
初始化:第一次赋值
时机:2种
声明时直接初始化 int a=1;
先声明,再初始化 int a;
a=1;
数组的变量初始化:3种情况(带new为动态,不带new为静态)
静态初始化(只有一种时机,声明时直接初始化)
String[] names = {“A”};
int [] nums = {};
例:int[] nums = {3,4,6,1,2};//静态存储

              动态初始化(两种时机)
            ------规定数组长度的写法
              int[] arges = new int[length];(写长度不能加大括号)

            例:/*使用动态初始化,创建一个数组arr2,存储3个整型元素*/
                int[] arr2 = new int[3];

            例:/*创建5个长度的布尔数组fs,并输出*/
            boolean[] fs = new boolean[5];
            System.out.println(Arrays.toString(fs));

             其实有默认的元素:
             整数类型:默认0
             浮点数类型:默认0.0
             字符类型:默认'\u0000'
             布尔类型:默认false
             引用数据类型:默认null

            -------不规定数组长度,用于存储已知数据(长度已知如存储1,2,3,4,5,)
         int[] ages = new int[]{};
        double[] counts = new double[]{1.2,3.14}
            例:int[] num_s = new int[]{3,4,6,1,2};//动态存储

5.数组的长度:
即数组元素的个数
表示方式:变量名.length;
6.数组的下标{index}:
下标从0开始,最后一个元素的下标为:length-1;
下标范围:0~length-1;
例:
/*访问nums的第一个元素并输出
访问num_s的最后一个元素并输出
*/
int[] nums = {3,4,6,1,2};//静态存储
int[] num_s = new int[]{3,4,6,1,2};//动态存储
int num = nums[0];
System.out.println(“num:”+num);
System.out.println(“num_s[4]:”+num_s[num_s.length-1]);

7.数组元素的访问(查看);
通过下标进行查看
语法:变量名[index];

//查看fs数组的第六个元素
System.out.println(fs[5]);

元素的遍历:从头到尾依次查看(需要输出,for循环不用输出)
for(int i=0;i<变量名.length;i++){
System.out.println(变量名[i]);
}

例:/*使用for循环对数组arr2进行遍历*/

  for(int i=0;i<arr2.length;i++){
  System.out.println("arr2的第"+(i+1)+"个元素:"+arr2[i]);
  }

8.数组的覆盖(赋值,替换)

语法:变量名[index] = value;

例:/*将arr2的第一个元素更改为1000*/
arr2[0]=1000;

例:/*创建一个数组num2,存储元素,
int[] nums ={99,100,98,99,100};
1000,99,100,98,99,100*/
int[] num2 = new int[6];//定义num2长度为6
num2[0]=1000;
System.arraycopy(nums,0,num2,1,nums.length);//对nums进行复制
System.out.println("num2:"+Arrays.toString(num2));

9.数组间的赋值
就是指变量间的赋值

通过一个变量对数组的元素进行修改,
那么与之相关的变量对应的数组的元素
也会发生变化。

10.数组下标越界异常
java.lang.ArrayIndexOutOfBoundsException
出现的原因:
访问数组元素时的下标超出了范围

            正确范围:0~length-1
 错误下标:
       变量名[-1]
       变量名[length]

11.引用类型之Arrays
是数组的工具类,此类提供了很多对数组操作的功能方法
如:
String info =Arrays.toString(数组名); //
Arrays.toString():此方法是将数组的元素一一拼接成字符串
输出格式如下;
“{元素1,元素2,元素3,元素length-1}”

12.数组的复制
数组的特点:一经创建长度不可变
——-系统复制方法:(既适合从一开始复制,也适合从中间复制)
System.arraycopy(src,startl,des,start2,length);

src:源数组,即被复制的数组名
    start1:源数组复制的开始下标
    des:目标数组,即复制到的数组名
    start2:目标数组复制的开始下标
    length:复制的长度

例:int[] nums ={99,100,98,99,100};
int[] num1 = new int[nums.length];
    /*使用系统复制法*/
System.arraycopy(nums,0,num1,0,nums.length);
System.out.println("num1:"+Arrays.toString(num1));

——–工具类提供的复制方法:(有扩容效果)
元素类型[] 新数组变量=Arrays.copyOf(src,newLength);
src:源数组
newLength:新数组的长度

例: 扩容复制
    int[] nums = {1,2,3,4,5};
    int[] num1 = Arrays.copyOf(nums,5);
    System.out.println(Arrays.toString(num1));
    /*创建一个int类型的数组num2,长度为10,前五个元素为num1的内容*/
    int[] num2 = Arrays.copyOf(num1,10);
    System.out.println(Arrays.toString(num2));

    /*创建一个数组num3,长度为4,存储num1的前四个元素*/
    int[] num3= Arrays.copyOf(num1,4);
    System.out.println(Arrays.toString(num3));
}



功能解释:从src的下标为0的元素开始复制
           复制到长度为newLength的新数组中

新数组存放元素的开始位置为0

例1.
/*
创建double的数组arr3 长度为4,并遍历
字符数组arr4,长度为5,并遍历
布尔数组arr5,长度为5, 并遍历
字符串数组arr6,长度为4,并遍历
*/
public static void main(String[] args){
double[] arr3 = new double[4];
for(int i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值