1. 方法概述
1.1 方法的概念
方法(method)是程序中最小的执行单元
-
注意:
-
方法必须先创建才可以使用,该过程成为方法定义
-
方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
-
2. 方法的定义和调用
2.1 无参数方法定义和调用
-
定义格式:
public static void 方法名 ( ) { // 方法体; }
-
调用格式:
-
//在main()方法中调用定义好的方法
方法名();
-
注意:
方法必须先定义,后调用,否则程序将报错
3. 带参数方法定义和调用
3.1 带参数方法定义和调用
-
定义格式:
public static void 方法名 (参数1) { 方法体; } public static void 方法名 (参数1, 参数2, 参数3...) { 方法体; }
-
调用格式:
方法名(参数); 方法名(参数1,参数2);
3.2 形参和实参
-
形参:方法定义中的参数
等同于变量定义格式,例如:int number
-
实参:方法调用中的参数
等同于使用变量或常量,例如: 10 number
4. 带返回值方法的定义和调用
4.1 带返回值方法定义和调用
-
定义格式
public static 数据类型 方法名 ( 参数 ) { return 数据 ; }
public static boolean isEvenNumber( int number ) { return true ; }
-
调用格式
方法名 ( 参数 ) ; 数据类型 变量名 = 方法名 ( 参数 ) ;
-
范例
isEvenNumber ( 5 ) ; boolean flag = isEvenNumber ( 5 );
5. 方法的注意事项
5.1 方法的注意事项
-
方法不能嵌套定义
-
示例代码:
public class MethodDemo { public static void main(String[] args) { } public static void methodOne() { public static void methodTwo() { // 这里会引发编译错误!!! } } }
-
-
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
5.2 方法的通用格式
-
格式:
public static 返回值类型 方法名(参数) { 方法体; return 数据 ; }
6. 方法重载
6.1 方法重载
-
方法重载概念
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
-
多个方法在同一个类中
-
多个方法具有相同的方法名
-
多个方法的参数不相同,类型不同或者数量不同
-
-
注意:
-
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
-
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
-
-
正确范例:
public class MethodDemo { public static void fn(int a) { //方法体 } public static int fn(double a) { //方法体 } } public class MethodDemo { public static float fn(int a) { //方法体 } public static int fn(int a , int b) { //方法体 } }
-
错误范例:
public class MethodDemo { public static void fn(int a) { //方法体 } public static int fn(int a) { /*错误原因:重载与返回值无关*/ //方法体 } }
7.6 获取索引
需求:
定义一个方法获取数字,在数组中的索引位置,将结果返回给调用处,如果有重复的,只要获取第一个即可。
代码示例:
package com.itheima.demo;
public class Test4 {
public static void main(String[] args) {
//定义一个方法获取数字,在数组中的索引位置,将结果返回给调用处
//如果有重复的,只要获取第一个即可
int[] arr = {1,2,3,4,5};
int index = contains(arr, 3);
System.out.println(index);
}
//1. 我要干嘛?判断数组中的某一个数是否存在
//2. 需要什么?数组 数字
//3. 调用处是否需要继续使用?返回
//获取number在arr中的位置
public static int contains(int[] arr, int number) {
//遍历arr得到每一个元素
for (int i = 0; i < arr.length; i++) {
//拿着每一个元素跟number比较
if(arr[i] == number){
//如果相等,表示找到了
return i;
}
}
//当循环结束之后,如果还不能返回索引,表示数组中不存在该数据
//可以返回-1
return -1;
}
}
java内存分配
new堆,其他栈(先进后出)