javase数组

一、数组简介

1. 概念:一组连续的存储空间,存储多个相同类型的数据。
2. 特点:
	a. 类型相同
	b. 长度固定
3. 创建
	a. 声明:
		i. 数据类型【】 数组名
		ii. 如:int【】 num;
			String【】 strs;
			byte【】bs;
	b. 创建
		i. 动态创建
			1) 数组名 = new 数据类型【数组长度】;
			2) 数组名 = new 数据类型【】{值1,值2,值3…};
		ii. 静态创建
			1) 数据类型【】 数组名 = {值1,值2值3…};
	c. 内存划分
		i. new:在堆内存中开辟一块运行空间
		ii. 图

在这里插入图片描述

	d. 数组的内存划分

在这里插入图片描述
在这里插入图片描述

	e. 数组的存、取值
		i. 取值:数据类型 变量名 = 数组名【下标】;
		ii. 获取长度:数组名.length;
		iii. 存改值:数组名【下标】 = 值;

在这里插入图片描述

4. 使用
	a. 内存图

在这里插入图片描述

	b. 细节

在这里插入图片描述

二、 数组遍历

1. 遍历数组
	a. 第一种方式(foreach)

在这里插入图片描述

	b. 第二种方式(for)
2. 异常
	a. 空指针
	b. 越界
	c. 代码

在这里插入图片描述

	d. 结果

在这里插入图片描述

3. 例:处理最值

在这里插入图片描述

	寻找最值(max、min)
	package cn.wf.array;
	
	/**
	 *找寻最值
	 * @author xx
	 * @date 
	 */
	public class BestValue {
	    public static void main(String[] args) {
	        int[] nums = {3,65,89,102,55,66};
	        int num = maxNum(nums);
	        System.out.println(num);
	    }
	
	    /**获取最值
	     * @return*/
	    public static int maxNum(int[] ns){
	      int maxNum = ns[0];
	      for (int i = 0;i<ns.length;i++){
	          if (ns[i]>maxNum){
	              maxNum = ns[i];
	          }else {
	              break
	
	;
	          }
	      }
	        return maxNum;
	    }
	
	}

三、数组排序

1、两数交换

在这里插入图片描述

2、排序
	i. 选择排序:和每一个数比较
	ii. 冒泡排序:将数组中的两两依次比较,将大的数交换到最后(右边),剩余数依次重复。
	iii. 对比:选择排序比冒泡排序效率高一点

在这里插入图片描述

	冒泡的第二种方式(推荐):

在这里插入图片描述

	iv. 数组实现:arrays.sort

在这里插入图片描述

四、数组的应用

1. 数组拷贝、复制
	a. Arrays.copy;
2. 数组的扩容
3.  二维数组
	a. 声明
		i. 数据类型[][]   数组名
	b. 创建
		i. 动态
			1) 数组名 = new 数据类型【当前二维数组中一维数组的个数】【一维数组的元素】
			Int[][] numbers = new int[3][3];
			2) 数组名 = new  数组类型[][]{{1,2,3},{4,5,6},{7,8,9}};
		ii. 静态
			1) 数组类型[][]  数组名 = {{},{},{}};
		iii. 例证

在这里插入图片描述

		iv. 内存分配

在这里插入图片描述

		v. 使用

在这里插入图片描述

			1) 杨辉三角
				a) 直角
public class YanghuiTriangle {
    public static void main(String[] args) {
        //定义了一个长度为10,高度为10的二维数组,数组中的值都为0;
        int[][] arr=new int[10][10];
        for(int i=0;i<arr.length; i++) {
            //由于只是给杨辉三角内的位置赋值,所以是j<=i
            for(int j=0;j<=i;j++) {
                //根据规律,使用if else 赋值
                if(j==0||j==i) {
                    arr[i][j]=1;
                }else {
                    arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
                }
				/*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出
					"\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等
				*/
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }

    }
}

在这里插入图片描述

				b) 等腰
public class YanghuiTriangle2 {
    public static void main(String[] args) {
        int rows = 10;
        for (int i = 0; i < rows; i++) {
            int number = 1;
            // 打印空格字符串
            System.out.format("%" + (rows - i) * 2 + "s", "");
            for (int j = 0; j <= i; j++) {
                System.out.format("%4d", number);
                number = number * (i - j) / (j + 1);
            }
            System.out.println();
        }

    }
}	

在这里插入图片描述

4. 稀疏数组

数组- 稀疏数组_kevin的博客-CSDN博客_稀疏数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值