函数:
针对很多操作相同的代码,我们也是可以提取操作。可以提高代码的复用性和维护性。
这种东西在Java语言中叫做:函数。(推荐:方法)
函数:
定义在类中,具有特定功能的一段小程序。
格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
执行语句;
return 返回值;
}
解释:
修饰符:public static
返回值类型:这段程序最终返回的结果的类型。
函数名:其实就是函数的名称,方便调用。
参数:
参数类型:其实就是数据类型。
形式参数:就是接受实际参数的变量。(函数定义/声明的时候)
实际参数:实际参与运算的那个变量。(函数调用的时候)
实参:
在主函数中调用一个函数时,函数名后面括弧中的参数。
实参可以是常量、变量、表达式、函数等,但是它们必须具有确定的值,
以便把这些值传给形参。
形参:
是在声明函数时使用的参数
目的是用来接收调用该函数时传递的参数
执行语句:就是按照正常的逻辑完成的功能代码。
返回值:就是程序的结果。
return 返回值:将来在哪里调用这个函数,那么,return就把结果返回到哪里。
注意:
A:函数与函数是平级关系,不能嵌套定义。
B:函数只有被调用才执行。
函数调用:具有明确返回值的函数的调用。
A:单独调用。一般是没有意义的。
B:输出调用。(测试)因为,我可能还需要对结果进行计算。所以,不够好。
C:赋值调用。推荐方式。
数据类型 变量名 = 函数名(实际参数);
函数是怎么结束的?
函数其实是有关键字return让他结束的。
注意:void类型的函数,其实最后一行。默认有一个return;
(return后面不能有语句,因为无法访问)
函数重载:
定义:
在很多时候,我们的功能可能是相同的,但是参数可能不同。
如果起不同的名字,当然是可以的。
但是,又由于函数的名字 -- 见名知意。
所以,很多时候,我们必须用一个有意义的名字。
在这种情况下,Java就提供了一种机制:函数重载。
特点:
函数名相同,参数列表不同。(个数,对应的类型)
与返回值类型无关。
注意:
永远建议,写的什么类型的形式参数,你就应该用什么类型的实际参数调用。
如果实际类型是小的,形式类型是大的。可以。反之不行。
数组:
数组:就是存储多个同一种数据类型元素的容器。
(就是存储同一种类型数据的容器。)
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
索引。
格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
左边:
int:表示数据的类型。
[]:表示这是一个数组。
arr:数组的名字。
右边:
new:申请内存空间。
int:表示数据的类型。
[]:表示这是一个数组。
5:数组的长度。
System.out.println(arr);
[I@7f4ec
我要获取第一个元素,肿么办?
通过索引获取。格式:数组名[索引]
内存结构:
栈内存:用于存储局部变量,或者方法的执行
当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
每一个实体都有内存地址值
实体中的变量都有默认初始化值
(整数:0;浮点数:0.0;字符型:'\u0000';布尔型:false)
实体不在被使用,会在不确定的时间内被垃圾回收器回收
方法区:方法,String常量池,静态区。
本地方法区:与系统相关的方法
寄存器:由cpu执行
【注】:
局部变量:定义在方法中或者方法声明上的形参都叫局部变量。
数组的定义方式:
方式1:
数据类型[] 变量名 = new 数据类型[个数或者长度];
举例:
int[] arr = new int[5];
方式2:
数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3...};
(作为实际参数直接传递,用这种方式)
举例:
int[] arr = new int[]{1,2,3,4,5};
【注】:
针对方式1,其实还有一种类似的情况。(不推荐)
int arr3[] = new int[5];
针对方式2,也有一个类似情况。我也喜欢这个。
int[] arr4 = {1,2,3,4,5};
右边隐含了 new int[]
数组操作的常见问题:
A:数组越界异常。你访问了不存在的索引。
ArrayIndexOutOfBoundsException
B:空指针异常。一个实例(对象)已经不存在了,你还去访问它的内容。
NullPointerException
数组遍历:
定义:
把数据存储起来就是为了使用,而要使用数组中的数据,就必须通过索引。
获取数组中的所有元素--数组遍历。
获取数组的长度:
Java提供了一个属性:length
格式:数组名.length 记着。
System.out.println(arr.length);//5
System.out.println(arr2.length);//16
获取最值:
查找:
一维数组:
23,65,71,92,46
二维数组:
其实就是元素是一个一维数组。
索引:角标,下标,编号。
格式:
方式1:
int[][] arr = new int[3][2];
解释:
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1索引位赋值为78写法是:arr[0][1] = 78;
二维数组定义格式:
方式1:
int[][] arr = new int[3][2];
标准的二维数组
规则的矩形。
方式2:
int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
非规则的矩形。
方式3:
int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
二维数组的遍历
思路:
A:二维数组的每一个元素是一维数组。
获取到每一个一维数组。
B:一维数组的遍历我们讲过了。
arr.length 获取二维数组的长度,其实也就是一维数组的个数
arr[x].length 获取的是每一个一维数组的长度
arr[x][y] 获取的是二维数组的元素
|
|