数组

  1. 数组: 定义一组变量
    变量单个单个定义

    保存一个学生的单科成绩 int s = 89;
    有三个学生 int s1=89,s2=90,s3=100;

    定义数组: 定义数组变量
    类型[] 数组名 = new 类型[数组长度];

    //定义了一个长为10的数组 数组里存储元素的类型是int
    int[] arr = new int[10];
    //定义了一个长度为5的数组 数组里在座元素的类型是double
    double[] brr = new double[5];
    

    数组里的变量都和数组名同名,只能通过下标的形式来区分每一个变量
    下标: 是从0开始递增,到数组长度-1
    下标不要越界(不要超过泛围,否则将报错
    java.lang.ArrayIndexOutOfBoundsException)
    数组下标越界异常

    数组名.length 可以获得数组的长度
    

    练习: 定义一个数组,数组长度为10
    从键盘输入10个数字保存到数组中

    	把这10个数字输出来
    	找出这10个数字里面的最大值
    	
    	把这个数组中的元素逆序
    

    数组最关键的问题 通过下标访问 下标的取值是从0开始

    练习:把100以内的质数 放到一个数组里面
    	然后再输出
    	  
    	  生成6个不重复的[1-31]的数字,然后显示
    	Random rand = new Random();
    	int i = rand.nextInt(31) + 1;
    

    数组 缩放

    数组在定义之后元素会自动进行初始化
    数值 0
    布尔 false
    字符串 null

    数组初始化:
    动态初始化: 类名[] 数组名 = new 类型[数组长度];
    静态初始化: 类名[] 数组名 = new 类型[]{v1,v2,v3,…};
    类名[] 数组名 = {v1,v2,v3,…};
    静态初始化时不能指定数组长度,根据{}值的个数来决定

    Arrays.toString(数组名);
    把数组里面的元素转换化一个字符串

    Arrays.copyOf(数组,数组长度)
    缩放数组 并且保留元素
    如果是对数组扩容,则会复制原数组里面所有的元素 且 扩容部分填充默认值
    如果是缩小数组大小,则数组里的元素减少

    System.arraycopy(src, srcPos, dest, destPos, length);
    src: 源数组
    srcPos: 源数组下标位置
    dest: 目标数组
    destPos: 目标数组下标位置
    length: 拷贝长度
    从源数组src的下标位置srcPos拷贝length个元素到目标数组dest的下标位置destPos

    如果源数组的元素个数不够或者目标数组存储不下都将导致异常
    java.lang.ArrayIndexOutOfBoundsException

    练习:
    交换两个数组的值
    int[] arr = new int[]{1,2,3,4};
    int[] brr = new int[]{5,6,7,9,10};

    基本数据类型 8种
    引用数据类型

    二维数组:
    数据类型[][] 数组名 = new 数据类型[二维数组长度][一维数组长度];
    new 数据类型[行][列]

    唯一标识一个元素:由行和列才能确定唯一的那个元素
    行和列: 下标
    下标都是从0开始

    练习:nXn的二维数组
    逆转矩阵
    1 2 3 1 4 7
    4 5 6 --> 2 5 8
    7 8 9 3 6 9

基本数据类型 java只有8种
引用数据类型

一维数组:
类型[] 数组名 = new 类型[数组长度];
类型[] 数组名 = {v1,…};
类型[] 数组名 = new 类型[]{v1,v2,…};
下标:从0开始,到数组长度-1
数组名[下标] 访问数组里的元素

数组长度:  数组名.length


for(int i=0;i<数组名.length;i++){
	数组名[i]
}


二维数组:
	类型[][] 数组名 = new 类型[二维数组长度][一维数组长度];
	int[][] crr = new int[3][4];

当访问一个没有引用具体对象的引用变量时将引发以下异常:
	java.lang.NullPointerException

练习:
要保存杨辉三角形的前7行
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10 10 5  1
      arr[i][j] = arr[i-1][j-1] + arr[i-1][j];


练习:
	有4个班级
	5个学生
	6个学生
	7个学生
	9个学生

	控制台输入 保存这些学生的成绩
	找出每一个班的最高成绩  以及 所有班级里成绩最高的

39题 约瑟夫问题:
	有n个编号(1-n)小孩围成一圈,从第1个小孩开始依次进行重复报数 1-3
	报到3数字的小孩出列,求最后剩下的那个小孩子的编号 


Arrays.toString();
数组名.length 
数组名.copyOf(数名,数组长度);
System.arrayCopyOf(src,srcPos,dest,destPos,length);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值