JavaSE学习总结:基本数组

1.为什用数组

  • 1、同时存储多个数,代码简洁,而且提高了效率
  • 2、分类存储,方便查找

2.数组的概念

  • 对一组具有相同数据类型的变量,使用一个名字来进行管理,这个统一的名字,称为数组名。
  • 这一组具有相同数据类型的变量,在堆内存中开辟连续的空间。
  • 数组中的每一个数据,称为元素。
  • 数组的每一个元素,依靠下标,索引,编号进行区分。
  • 数组的元素的总个数,称为数组的长度。

2.1一维数组

2.1.1数组的声明

  • 1.元素的数据类型[] 数组名;例如:int[] arr;元素是int,每一个元素存的是一个整数值。

  • 例如:Student[] arr;元素是Student,每一个元素存的是Student对象的地址。

  • 2.数组的数据类型 数组名;上面的两个数组,int[]就是数组的类型,元素的类型是int

2.1.2数组的初始化

-1. 动态初始化 数组名 = new 元素的数据类型[数组的长度];

  • 元素的数据类型[] 数组名 = new 元素的数据类型[]{元素1的值,元素2的值。。。};
    元素的数据类型[] 数组名;
    数组名 = new 元素的数据类型[]{元素1的值,元素2的值。。。};

  • 2.静态初始化,元素的数据类型[] 数组名 ={元素1的值,元素2的值。。。};//简写的只能是声明与初始化在一行

2.1.3数组的长度

  • 数组名.length

2.1.4数组的元素的表示

  • 数组名[下标]
  • 下标的范围,[0,数组的长度-1] [0,数组的长度)
  • 如果超过下标的范围,会报“数组下标越界ArrayIndexOutOfBoundsException”

2.1.5数组如何遍历

  • (1)for循环遍历
    for(int i=0; i<数组名.length; i++){
    数组名[i]表示一个元素
    }
  • (2)循环遍历
    for(元素的数据类型 临时变量 : 数组名){
    每一次循环临时变量代表一个元素
    }
  • (2)foreach循环遍历
  • for(元素的数据类型 临时变量 : 数组名){
    每一次循环临时变量代表一个元素
    }
    for循环与foreach循环的区别:foreach每一次循环把元素的值copy给临时变量,如果此时对数据进行了操作,则是实际对copy的数据进行的,原来的数据不会改变。

3.二维数组

3.1.1数组的声明

  • 元素的数据类型[ ][ ] 二维数组名;

3.1.2初始化

  • 1.动态初始化:
  • 规则 二维数组名 = new 元素的数类型[行数][列数]; 总元素的个数是行数*列数,每一行的列数相同的。
  • 不规则 二维数组名 = new 元素的数据类型[行数][];二维数数组名[行标] = new 元素的数据类型[该行的列数];二维数数组名[行标] 又称为行对象;二维数数组名[行标] = new 元素的数据类型[]{元素1,元素2.。。。};
  • 2.静态初始化,二维数组名 = new 元素的数据类型[][] {{第一行的各个元素},{第二行的各个元素},{第三行的各个元素},{。。。。}};

3.1.3长度

  • 行数,二维数组名.length
  • 每一行的列数,行对象.length;二维数组名[行标] .length

3.1.4元素的表示

  • 行对象 二维数组名[行标] 把二维数组如果看成一个一维数组,那么它的每一个元素就是一个行对象
  • 具体的元素 二维数组名[行标][列标],行标的范围 [0,二维数组名.length)。列标的范围 [0, 二维数组名[i].length)

3.1.5如何遍历

  • 1.普通for
  • for(int i=0; i<array.length; i++){
    for(int j=0; j<array[i].length; j++){
    array[i][j]代表一个元素
    }
    }
  • 2.增强for
  • for(行对象的类型 行对象名 : 二维数组名){
    for(元素的类型 临时变量 : 行对象名){
    临时变量代表每一行中的某个具体元素
    }
    }

4. 数组的特点和注意事项

  • 1、数组的类型可以为任意类型

  • 2、数组访问里面的元素 ,通过 数组名[下标], 下标:0-名.length-1

  • 3、数组的长度一旦指定不能修改

  • 4.数组的多种写法

  • 一维数组,元素的数据类型[] 一维数组名,例如:int[] arr,例如:Student[] arr。

  • 元素的数据类型 一维数组名[],例如:int arr[],例如:Student arr[]。

  • 二维数组

  • 元素的数据类型[][] 二维数组名,例如:int[][] arr,例如:Student[][] arr

  • 元素的数据类型 二维数组名[][],例如:int arr[][],例如:Student arr[][]。

  • 元素的数据类型[] 二维数组名[],例如:int[] arr[],例如:Student[] arr[]。

5.常见异常

  • ArrayIndexOutofBoundsException数组下标越界
  • NullPointerException空指针异常

6.对象数组

  • 1.声明 类型[] 名;
  • 2.开辟空间(指定长度) 名=new 类型[长度];
  • 3.赋值 ① 先创建对象(也就是其中打算放的内容)
    Student s=new Student();
    s.setName();
    s.setAge();


Student s=new Student(name,age);

②将对象放到指定的数组某个空间中
名[下标]=对象;

  • 4.使用 使用一:循环打印

for(int i=0;i<数组名.length;i++){
数组名[i] .方法()/属性;

}

使用二:循环判断

for(int i=0;i<数组名.length;i++){
if(数组名[i] .属性<max){

}

}

7.数组的操作工具类

java.util.Arrays

7.1、查找

public static int binarySearch(int[] a,int key)
a数组必须是排好序的

7.2、填充

  • public static void fill(int[] a,int val) 给a数组的每一个元素填充为val
  • public static void fill(int[] a,
    int fromIndex,
    int toIndex,
    int val)

给数组a中fromIndex到toIndex之间的元素填充为val

7.3、复制

  • public static int[] copyOf(int[] original, int newLength) 复制original数组,得到一个新的数组,新的数组的长度是newLength。如果newLength<original数组的长度,相当于 复制了 original数组的[0,newLength-1]。如果newLength>original数组的长度,相当于 新的数组的前面的元素都是和original数组一样的,剩下的元素都是默认值
  • public static int[] copyOfRange(int[] original,
    int from,
    int to)

从original数组的from开始复制到to这个部分的元素,产生一个新的数组。
from必须在original数组的[0, original数组长度]范围之内。
to可以在original数组下标范围内,也可以超过,如果超过,超过的部分使用默认值。

  • /*
  • System类中也声明了一个数组复制的方法
  • System.arraycopy(src, srcPos, dest, destPos, length);
  • 第一个参数:源数组 (被复制的数组)
  • 第二个参数:从源数组的srcPos这个下标开始复制
  • 第三个参数:目标数组
  • 第四个参数:从目标数组的destPos位置开始放
  • 第五个参数:一共复制几个
    */

7.4、排序

  • public static void sort(int[] a)
  • 关于引用数据类型的数组排序,需要java.lang.Comparable或java.util.Comparator接口的支持

7.5、toString

  • 字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。
  • public static String toString(int[] a)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值