数组
数组
用于传出多个相同数据类型的存储模型
定义格式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) 进入当前代码之中,如果当前代码已经最底层的就执行下一步