1、方法
定义:用来完成特定功能的代码块,将它写在一起,可供重复使用,称作方法。
格式: 修饰符 返回类型 方法名(参数类型 参数名1,参数类型 参数名2...){
方法体;
return 返回值;
}
格式解释:修饰符:有许多如public static等;
返回值类型:功能结果的数据类型;
方法名:起了一个名字,方便调用该方法;
参数类型:参数的数据类型;
参数名:变量名;
参数分类:
实参:实际参与运算的数据;
形参:方法上定义的,用于接收实际参数的变量;
方法体:完成功能的代码块;
return:结束方法;返回值:功能的结果,由return带给调用者。
注意事项:方法不调用不执行;
方法之间是平级关系,不能嵌套定义;
方法定义的时候,参数是用,隔开的;
方法在调用的时候,不用在传递数据类型;
如果方法有明确的返回值类型,就必须有return语句返回。2、数组
概念:存储同一种数据类型的多个元素的容器。
特点:每一个元素都有编号,从0开始,最大编号是长度-1。编号的专业叫法:索引。
定义格式: (1)数据类型[] 数组名;(B)数据类型 数组名[]; 推荐使用第一种。
数组的初始化:
(1)动态初始化
只给长度,系统给出默认值。举例:int[] arr = new int[3];
(2)静态初始化
给出值,系统决定长度。举例:int[] arr = new int[]{1,2,3};
数组操作的常见问题:
(1)数组索引越界 (ArrayIndexOutOfBoundsException),访问到了数组中的不存在的索引时发生。
(2)空指针异常(NullPointerException),数组引用没有指向实体,却在操作实体中的元素时。
遍历数组的方法:int[] arr = {0,1,2,3,4,5,6,7,8,9};
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
3、二维数组
理解:二维数组的实质是在一维数组的基础上,每个元素存入的是一维数组。个人喜欢把它当成数学中的直角坐标来看,容易理解。
格式:
(1)数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:int[][] arr = new int[3][2];
(2)int[][] arr = new int[3][2];
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1];
(3)数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
举例:int[][] arr = new int[][]{{1,2,3},{4,6},{6}};
---------------------------------------------------------------------------------------------------------------------------------
*(1)参数传递问题,以下代码输出结果是什么?
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);
change(a,b);
System.out.println("a:"+a+",b:"+b);
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
}
public static void change(int a,int b)
{
System.out.println("a:"+a+",b:"+b);
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);
}
public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
结果:a:10,b:20
a:10,b:20
a:20,b:40
a:10,b:20
4
分析:基本类型:形式参数的改变不影响实际参数;引用类型:形式参数的改变直接影响实际参数。数组属于引用类型,所以方法能够直接修改数组的值。此外从java内存图分析更容易理解。
---------------------------------------------------------------------------------------------------------------------------------