Bootstrap

02数组的使用

数组

数组

用于传出多个相同数据类型的存储模型

定义格式1:
		数组类型[] 变量名;
		例如:int[] arr;
	定义格式2:
		数据类型 变量名[];
		例如:int arr[];
	注意:常用格式1,因为格式2消耗资源多

数组静态初始化

   初始化时指定每个数组元素的初始值,由系统决定数组长度
   格式:数据类型[] 变量名=new 数据类型[]{数据1,数据2...数据n};
   例如:int[] arr=new int[]{1,2,3,4,5};
   可以简化为:数据类型[] 变量名={数据1,数据2...数据n};
   注意:简化写法中使用的是大括号
   例如:int[] arr={1,2,3,4,5,6,7,8,9,10};
   注意:简写不能进行拆分

动态初始化:

初始化时只指定数组的长度,由系统为数组分配初始值
格式:数据类型[] 变量名=new 数据类型[数组长度];
例如:int[] arr=new int[10];
注意:由系统为数组分配初始值(每一种数据类型的默认值,int默认值为0,double默认值为null)

数组元素的访问:获取和修改元素的值

分为两部分
	  1.访问数组
	        通过数组名称来访问
	        格式:数组名称
	   2.访问数组中的元素
	        通过索引来访问
	        格式:数组名称[索引]
索引
	  概述:是数组中元素排序的方式
	  作用:用于访问数组中的数据
特点:
	  1.索引从0开始
	  2.索引是连续的
	  3.索引是逐一增加,每次加1
注意:数组索引的最大值等于当前数组长度大小-1

数组在内存中的执行情况:

比如:int[] arr=new int[5];

分为三步执行
new int[5]:
    在堆中开辟大小为5的int类型空间
int[] arr:
    在栈中执行
=:
    是把new int[5]开辟空间的地址值赋值个arr
地址值:
	标识所开辟空间在内存中的位置
内存结构
	栈内存
	特点
		 用于存储局部变量,当数据使用完,所占空间会自动释放。
	堆内存
		特点
		 1:存储new出来的内容(实体和内存)。
		 2:每一个实体都有内存地址值。 实体中的变量都有默认初始化值
		 3:实体不再被使用时,会在不确定的时间内被垃圾回收器回收

在这里插入图片描述

遍历通用格式:

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

二维数组:数组存储的数据类型还是数组

定义
	格式1:数据类型[][] 数组名称;
	格式2:数据类型 数组名称[][];
初始化:
	动态:数据类型[][] 数组名=new int[数组长度1][数组长度2];
		注意:数组长度1表示存储几个数组,数组长度2表示每个数组中能存储几个元素
	静态:数据类型[][] 数组名=new int[][]{{数组1},{数组2}...{数组N};
		例如:int[][] arr=new int[][]{{1,2,3},{4,5,6},{7,8,9}}
		简化写法:数据类型[][] 数组名={{数组1},{数组2}...{数组N};
			例如:int[][] arr={{1,2,3},{4,5,6},{7,8,9}}
			注意:每一个数组中可以存储元素的个数可以不相同
元素访问:
	1.访问数组
		格式:数组名称
	2.访问数组中的数组
		格式:数组名称	[index]
	3.	访问数组中数组的元素
		格式:	数组名称  [index][index]

方法

方法的定义

具有独立运行的代码块组织(封装)
为一个整体,使其具有特殊功能的代码集

方法定义
	格式:public static void 方法名称(){
			方法体;
		}
		注意:方法的定义在main方法之外
	方法调用
		格式:方法名称();
		注意:在main方法或方法之中
注意:先定义在使用

有参方法

单个参数
	格式:public static void 方法名称(数据类型 变量名){
			方法体;
		}
    调用:方法名称(变量名/常量);
    	注意:类型要保持一致
多个参数
	格式:public static void 方法名称(数据类型1 变量名1,数据类型2 变量名2...){
			方法体;
		}
	调用:方法名称(变量名1/常量1,变量名2/常量2...)
注意:实参和形参的个数要保持一致
		 实参和形参的位置相对应(数据类型保持一致)

形参实参
形参:方法定义上的参数
实参:方法调用时的参数
注意:参数传递时,不能修改本身,可以所表示空间中的内容

有返回值的方法

格式:public static 返回值的数据类型 方法名称(参数){
		方法体;
		return 返回值;
	}
调用:方法名称(参数)
注意:方法调用等于所返回的值
     有返回值的方法必须加return,并且return必须在方法体的最后为位置
     如果返回值的数据类型为void,return可以加上(return后面不给数据)
     返回值要和返回值的数据类型保持一致(包含数据类型的自动提升)
     return之后不书写任何代码,因为return表示当前方法执行结束
     方法中不能再次书写方法,只能调用(如果方法中调用它本身会出现死循环)递归有结束条件

方法通用格式:

public static 返回值类型 方法名称(参数){
			方法体;
			return 数据;
		}
	public static :修饰符 先记住
	返回值类型:return 返回数据的类型,如果没有返回值 这里写void
    return:如果有返回值,返回值的数据类型要个返回值类型一致
	方法名:调用方法时候的标识符
	参数:由数据类型和变量名组成,多个参数之间以逗号分割
	方法体:某种功能的代码块
	return:调用方法最后,用于返回数据给调用者

注意(两个明确):明确返回值类型:主要明确方法是否有返回值,没有写void,有写对应的数据类型
明确参数:主要明确参数的类型和数量

递归:

方法本身调用方法本身,递归本身消耗的资源大,没必要不要使用

方法重载:

在同一个类中定义多个的方法,满足以下条件构成方法重载
1.在同一个类中
2.方法名相同
3.参数列表不同(参数数量不同/参数类型不同)
4.和返回值类型无关

方法重载特点:
1.重载仅作用于方法的定义,与方法的调用无关
2.重载仅针对同一个类中方法的名称和参数进行识别,与返 回值无关,不可通过返回值来判断方法是否是构成重载

DeBug:

程序调试工具,他可以查看程序的执行流程,也可以追踪程序执行过程来调试程序
idea想要进行程序追踪来开查看程序的执行流程
1.设置断点(从什么地方开始程序追踪)
2.执行debug
3.查看执行流程
      Step Over(F8) 当前区域的下一步
      Step into(F7) 进入当前代码之中,如果当前代码已经最底层的就执行下一步

可以查看程序的执行流程,也可以追踪程序执行过程来调试程序
idea想要进行程序追踪来开查看程序的执行流程
1.设置断点(从什么地方开始程序追踪)
2.执行debug
3.查看执行流程
Step Over(F8) 当前区域的下一步
Step into(F7) 进入当前代码之中,如果当前代码已经最底层的就执行下一步

;