文章目录
方法
将具有独立功能的代码库组织成为一个整体,使其具有特殊功能的代码集
无参方法的定义
方法必须先创建才可以使用。
public static void 方法名称(){
方法体;
}
无参方法的调用
方法定义之后不能直接运行,需要调用才可以执行。
方法名称();
每个方法在被调用执行的时候,都会被加载到栈内存(包括main方法),并且拥有自己独立的内存空间,方法内部的代码执行完毕之后,会从栈内存中出栈 ,释放空间
带参方法的定义
public static void 方法名称(参数类型 参数名称,参数类型 参数名称,······)
带参方法的调用
方法名称(参数1,参数2,参数3,....,参数n)
方法调用时,传入的参数的数量和类型必须和方法定义中的类型和数量相匹配。否则程序就会报错。
形参:方法定义时的参数
实参:方法调用时传递进来的参数
形参和实参的功能就是传递数据,发生方法调用时,实参的值会传递给形参
形参和实参的区别和联系
形参变量只有在方法被调用时才会分配内存,调用结束后就会被立即释放。所以形参变量只在方法内部有效,不能在方法的外部使用。
实参可以是常量 ,变量 ,表达式 ,方法等。无论实参是何种类型的数据,在进行方法的调用时,都必须有确定的值。
实参和形参在数量上 ,类型上,顺序上都必须严格一致。可以从实参类型自动转换成形参类型的除外,比如形参是float,实参是int,这完全是可以的。
方法调用中,发生的数据的传递是单向的。只能有实参传递给形参,而不能把形参反向传递给实参。一旦参数的传递完成,则实参和形参将不会有任何的关系。在方法的调用过程中,形参的值的改变不会影响实参。
带返回值的方法的定义和调用
public static 返回值类型 方法名称(参数列表){
······
return 数据/变量;(类型必须和返回值类型匹配)
}
注意:return 后不要存在任何语句,是执行不到的
当一个方法的返回值类型是void 时可以有返回语句return;相当于返回空
方法使用引用类型作为形参和返回值
方法的参数传递:
值传递: 传递的数据本身
引用传递:传递的地址,传递的是一个引用 ,所以引用的只要是同一个地址空间,那么任何地方对空间内容的修改,都将引起该地址空间上的数据的变化,所有指向此地址的引用都会改变。
方法的重载
形参的个数不同
参数的类型不同
不同类型的参数,如果顺序不同,也构成重载(只是名字不一样不算)
方法的返回值类型不能作为方法是否重载的判断依据
数组
定义
相同类型数据的有序集合。
描述的是相同类型的若干数据。按照一定的先后次序排列组合。其中每一个数据称为元素,每个元素都可以通过数组的索引或者下标(角标)来定位
特点
1 数组本身是引用数据类型,而数组中的元素可以是任意类型(基本类型/引用类型)
2 创建数组对象会在内存中开辟一块连续的空间,而数组名中引用的是这块连续空间的首地址。
3 数组的长度一但确定 就不能修改。想要扩容只能创建一个新的数组。
4 数组中存储的数据的类型必须是相同的。
分类
维度: 一维数组 ,二维数组 ,三维数组 ,多维数组…
数据类型:
- 基本类型的数组(整形数组,浮点型数组,字符型数组,布尔型数组)
- 引用类型数组
一维数组
声明
数据类型[] 数组名;或 数据类型 数组名[];
创建数组
数组名 = new 数据类型[数组长度];
数据类型[] 数组名 = new 数据类型[数组长度];
数组初始化
java中的数组必须先初始化,然后才能使用。
初始化:为数组中的元素分配内存空间,并为每一个元素赋值
方式
- 动态初始化
数组声明和数组元素的分配空间及赋值分开进行。
格式: `数据类型[] 变量名 = new 数据类型[数组的长度]`
- 静态初始化
在定义数组的同时就位数组元素分配空间并赋值
格式:`数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,...,数据n}`
此时在声明数组的时候 不需要的指定长度系统会根据给出的数据自动分配长度
简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,...,数据n}
默认值
byte,shot,int的默认值是 0
long类型的默认值0L
float ,double的默认值是0.0
char类型的默认值是"\u0000"
boolean的默认值是false
String为代表的引用类型的默认值是null
长度
用 数组名.length 获取
遍历
for(int i = 0 ; i < arr.length;i++){
}
for (int a : arr){
System.out.println(a);
}
二维数组
声明并创建
数据类型[][] 数组名 ; 或 数据类型 数组名[][]; 数组名 = new 数据类型[第一维长度] [第二维长度];
初始化
同一维数组一样,二维数组在创建的时候也可以初始化
int[][] arr1= {{2,3},{1,5},{3,9}};//初始化一个3行2列的整型二维数组
int[][] arr2= {{1,2,3},{1,5},{3,9}};//初始化一个3行的整型二维数组
遍历
//遍历二维数组的每一行
for (int i = 0; i < 二维数组.length; i++) {
//遍历每一行中的每一列
for (int j = 0; j < 二维数组[i].length; j++) {
//二维数组[i][j]
}
}
也可以使用增强for循环,与一维数组类似。