数组:
变量:存储单个数据
数组:存储多个数据
在内存中是一段连续的内存空间
相同数据类型数据的有序集合
数组的特点:
1.数组是一个容器,是一个引用数据类型,堆中
2.数组中的所有数据要求数据类型相同
3.长度一旦确定不可改变
4.有序 根据序号使用(索引|下标)
创建数组:
1.数组的声明
数据类型 变量名;
数据类型[] 数组名;
数据类型 数组名[];---不推荐
数据类型 :数组中所有数据的数据类型
[]->数组
数组名:标识符
2.初始化
动态初始化: 创建的时候不确定数组中的数据值,可以先创建,后续确定了数据值的时候再赋值
数据类型[] 数组名 = new 数据类型[长度];
默认值:整型0 小数0.0 boolean->false char->' ' 引用数据类型null
静态初始化: 创建数组的同时赋值
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3...};
数据类型[] 数组名 ={值1,值2,值3...}; --简单,不够灵活
静态初始化:
//静态初始化
String[] arr1 = new String[] {"青玉案","念奴娇","贺新郎"};
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1.length);//有几个数据
System.out.println(arr1.length-1); //最后一个位置的数据
//
char[] arr2= {'青','念','贺'};
arr2 = new char[] {'念'};
System.out.println(arr2);
动态初始化:
//声明一个存储int类型数据的数组
//动态初始化
int[] arr = new int[3];
//赋值
arr[0]=1;
arr[1]=2;
arr[2]=3;
//获取值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
数组的遍历:
依次拿出数据中的每一个数据操作
for普通循环
for..each增强循环:
for(数据类型 变量名:数组名/容器名){
变量名:代表数组中的从前到后的每一个数据
}
输出结果为:
根据索引操作数组中的数据
数组名[下标|索引]->定位数组中指定索引位置的空间,就可以赋值|获取值
数组中最后一个数据的索引
数组名.length-1
属性:
数组名.length 这个数组的数据的个数
Arrays(数组)的常用方法:
* Arrays.toString(数组) 把数组中的内容以字符串的形式返回
*
* Arrays.equals(arr1,arr2) 比较两个数组内容是否相等
*
* ====从索引为0的位置开始
* static int[] copyOf(int[] original,int newLength)//新长度 拷贝截取填充的效果
*
* ====从索引为指定的位置开始
* static int[] copyOfRange(int[] original,int form,int to)从原数组指定的位置开始,拷贝到指定的to位置
* **注意:结束位置不包含
*
* static void fill(int[] a,int val)数组中的所有位置,使用val数值填充
* static void fill(int[] a,int fromlndex,int tolndex,int val)
*
* static void sort(int[] a)对指定的int类型数组按数字升序进行排序
*
* static int binarySearch(int[] a,int key)查找数据出现的索引 返回值:-插入点 -1
* **使用前提:先升序进行排序,再查找索引
输出结果为:
随机输出英雄名字:
输出结果: