JavaSE 数组

数组

1.数组的概述和定义格式说明

A:数组概述:数组是存储多个变量(元素)的东西(容器),多个变量的数据类型要一致
B:数组概念:数组是存储同一种数据类型多个元素的集合。
            数组既可以存储基本数据类型,也可以村存储引用数据类型。引用数据类型:数组 类 接口 等
C:数组定义格式
格式1:数据类型[]  数组名
格式2:数据类型    数组名[]
举例:int[] a;   定义了一个int类型的数组a;
           int   a[]; 定义了一个int类型的a数组
2.数组的动态初始化
A:动态初始化定义:Java中的数据组必须先初始化,然后在使用
   初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
B:初始化分类:
   a.动态初始化:只指定长度,由系统给出初始化值
        例如:int[] arr=new int[3];
        方式2 int  arr2=new int[3];
   b.静态初始化:给出初始化值,由系统决定长度
    注意事项:这两种方式,只能使用一种,不能进行动静结合。
   C:动态初始化格式:
     数据类型[]  数组名=new 数据类型[数组长度]
     数组长度其实就是数组中元素的个数。
     例如:int []  arr=new int[3];定义了一个int类型的数组arr,这个数组可以存放3个int类型的值。
     数组的元素会编有索引,从0开始
     根据索引可以获取数组元素的值,也可以给数组元素重新赋值
D:案例演示	
	输出数组名称和数组元素

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

2.Java中的内存分配以及栈和堆的区别

2.1 Java语言的内存分配**
A:栈:存放的是局部变量
      局部变量:在方法定义中或者方法声明上的变量都是局部变量
B:存放的是所有new出来的东西
   特点:a.每一个new出来的东西都会为其分配一个地址值
         b.每一个变量都有一个默认值
                byte,short,int,long   --0
                float,double            --0.0
                char                      ---'\u0000'
                boolean                ----false
                引用数据类型       ----null
                c:使用完毕就变成垃圾,等待垃圾回收器对其回收
C:方法区:
D:本地方法区:(和系统相关)
E:寄存器:(cpu使用)

2.2 Java内存分配区域在这里插入图片描述

3数组的内存

3.1 图解1一个数组
A:定义一个数组,输出数组名称和数组中的元素值,给数组赋值,再次输出数组名称和数组中的元素值

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

3.2 数组的内存图解2二个数组
A:定义两个数组,分别输出数组名称和数组中的元素值,分别给两个数组赋值,再次输出数组名称和数组中的元素值

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

3.3 数组的内存图解3三个引用2个数组
A:	定义第一个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。
	定义第二个数组,定义完毕后,给数组元素赋值。赋值完毕后,再输出数组名称和元素。
	定义第三个数组,把第一个数组的地址值赋值给它。(注意类型一致),通过第三个数组的名称去把元素重新赋值。
	最后,再次输出第一个数组数组名称和元素。

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

3.4 数组的初始化静态初始化及内存图
 A:静态初始化的格式:
	格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
		举例: int[] arr = new int[]{1,2,3};
	简化格式:
		数据类型[] 数组名 = {元素1,元素2,…};
		举例: int[] arr = {1,2,3};
		B:画图演示
	a:定义一个数组,输出数组名称和数组中的元素值

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

3.5 数组操作的两个常见小问题越界和空指针
	A:案例演示
	a:ArrayIndexOutOfBoundsException:数组索引越界异常
		原因:你访问了不存在的索引。
	b:NullPointerException:空指针异常
		原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
		![在这里插入图片描述](https://img-blog.csdnimg.cn/20200413113547844.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0lUemhhemhhc3Nj,size_16,color_FFFFFF,t_70)
3.6 数组的基本操作
3.6.1 遍历
A:案例演示:    数组遍历:就是依次输出数组中的每一个元素。

在这里插入图片描述

3.6.2 获取最值
  A:案例演示:    数组获取最值(获取数组中的最大值或者最小值)

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

3.6.3 反转
A:案例演示:    数组元素反转(就是把元素对调)

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

3.6.4 查表法
A:案例演示:    数组查表法(根据键盘录入索引,查找对应星期)

在这里插入图片描述

3.6.5 基本查找
A:案例演示:    数组元素查找(查找指定元素第一次在数组中出现的索引)

在这里插入图片描述

在这里插入图片描述

1.二维数组

1.1二维数组概述和格式1的讲解
A:二维数组概述:二维数组其实就是每一个元素为一维数组的数组。
B:二维数组格式1
	数据类型[][] 变量名 = new 数据类型[m][n];
	m表示这个二维数组有多少个一维数组 必须写上
	n表示每一个一维数组的元素个数 可选
	举例:
		int[][] arr = new int[3][2];
		定义了一个二维数组arr
		这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
		每个一维数组有2个元素,可以通过arr[m][n]来获取
			表示获取第m+1个一维数组的第n+1个元素
C:注意事项
	A:以下格式也可以表示二维数组
		a:数据类型 数组名[][] = new 数据类型[m][n];
		b:数据类型[] 数组名[] = new 数据类型[m][n];
		这两种格式不推荐使用
	B:注意下面定义的区别
		int x,y;
		int[] x,y[];	
		
		区别是:
		 int[] x,y[];//定义了两个数组 一个是一维数组x 一个是二维数组y
		  x=new int[3];	
  			  y=new int[3][];
  			  
D:案例演示
	定义二维数组,输出二维数组名称,输出每一个一维数组名称,输出二维数组的2个元素

在这里插入图片描述

1.2 二维数组格式1的内存图解

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

1.3 二维数组格式2的讲解及其内存图解
A:二维数组格式2
	数据类型[][] 变量名 = new 数据类型[m][];
		m表示这个二维数组有多少个一维数组
		这一次没有直接给出一维数组的元素个数,可以动态的给出。
	举例:
		int[][] arr = new int[3][];
		arr[0] = new int[2];
		arr[1] = new int[3];
		arr[2] = new int[1];
B:案例演示
	定义一个二维数组,输出二维数组的名称和二维数组的的每一个一维数组,然后动态给二维数组赋值一维数组
	再次输出二维数组中的每一个一维数组,给二维数组中的元素赋值,输出对应的元素值

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

1.4 二维数组格式2的内存图解

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

1.5 二维数组格式3的讲解
A:二维数组格式3
		数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}...};
	简化版:
		数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
	这个格式属于静态初始化:由我们指定具体的元素值,由系统给分配长度
		举例: 
			int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
			int[][] arr = {{1,2,3},{5,6},{7}};
B:案例演示
	定义一个二维数组,打印每一个二维数组中的一维数组,在打印每一个二维数组中的元素

在这里插入图片描述

1.6 二维数组练习1遍历
A:案例演示
	需求:二维数组遍历
	外循环控制的是二维数组的长度,其实就是一维数组的个数。
	内循环控制的是一维数组的长度。

在这里插入图片描述

1.7二维数组练习2求和
	A:案例演示
	需求:公司年销售额求和
	某公司按照季度和月份统计的数据如下:单位(万元)
	第一季度:22,66,44
	第二季度:77,33,88
	第三季度:25,45,65
	第四季度:11,66,99

在这里插入图片描述
B:需求:打印杨辉三角形(行数可以键盘录入)

		1
		1 1	
		1 2 1
		1 3 3 1
		1 4 6 4 1 
		1 5 10 10 5 1
		分析:看这种图像的规律
	A:任何一行的第一列和最后一列都是1
	B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

在这里插入图片描述

2.参数传递

A:案例演示
	看程序写结果,并画内存图解释

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值