方法(函数)
什么是方法呢?
具有(特定功能)的一段独立的小程序(代码块)
方法的作用?
1.提高了代码复用性
2.提高了代码维护性
方法的定义格式?
修饰符 返回值类型 方法的名字(数据类型 变量名, 数据类型 变量名, ...) {
执行语句;(该方法的功能的代码实现)
return 返回值;
}
如何写一个方法?
记住两个明确:
a.明确参数列表
b.明确返回值类型
修饰符:对于现阶段来说,是固定的,public static
例子:
需求:定义一个方法,该方法的功能是获取两个整数之和的
public static int getSum(int i, int j) {
int sum = i + j;
return sum;
}
如何使用方法呢?
方法只有被调用才会执行
怎么调用?
1.单独调用:方法名(参数);
注意:如果方法的返回值类型为void的时候,只能使用单独调用
如果方法有具体返回值的时候,使用单独调用没有任何意义
2.输出调用:System.out.println(方法名(参数));
注意:如果方法的返回值类型为void的时候,不能使用输出调用
3.赋值调用:数据类型 变量名 = 方法名(参数);
注意:如果方法的返回值类型为void的时候,不能使用赋值调用
常见的方法的返回值类型都有哪些?
//定义返回值类型为void的方法
public static void kkk() {
return;
}
//定义返回值类型为数组类型的方法
public static int[] jjj() {
int[] arr = {1,2,3};
return arr;
}
//定义返回值类型为String(字符串)类型的方法
public static String iii() {
return "约吗";
}
//定义返回值类型为char类型的方法
public static char hhh() {
return 'a';
}
//定义返回值类型为boolean类型的方法
public static boolean ggg() {
return false;//true
}
//定义返回值类型为float类型的方法
public static float eee() {
return 12.5F;
}
//定义返回值类型为double类型的方法
public static double fff() {
return 12.5;
}
//定义返回值类型为byte类型的方法
public static byte aaa() {
return 12;
}
//定义返回值类型为short类型的方法
public static short bbb() {
return 12;
}
//定义返回值类型为int类型的方法
public static int ccc() {
return 12;
}
//定义返回值类型为long类型的方法
public static long ddd() {
return 12L;
}
我们在使用方法的时候需要注意哪些问题?
1.方法与方法是平级关系,所以不能嵌套定义
public static int aaa() {
public static int bbb() {
return 1;
}
return 1;
}//错误
2.方法的返回值类型和返回值要匹配
public static int aaa() {
return 1;
}
public static double aaa() {
return 1;
}
public static int bbb() {
return 'a';
}
public static int ccc() {
return (int)1.2;
}
3.当方法没有具体的返回值的时候,返回值类型就为void
public static void aaa() {
return ;
}
void:没有什么特殊的含义,而且只能写在返回值类型的位置上,代表该方法没有返回值
注意:当方法的返回值类型为void的时候,return关键字是可以省略不写的
public static void aaa() {
//return;
}
return关键字有什么用呢?
1.可以返回具体的数据,哪里调用返哪里
2.作为方法的结束标记
public static void aaa() {
return;
System.out.println("约吗");//编译报错,因为这行代码永远执行不到
}
public static int aaa() {
if(2 > 1) {
return 1;
}
}//编译报错,因为如果没有进if,就执行不到return,就没有结束标记,也不会返回一个数据了
基本数据类型值传递和引用数据类型值传递的问题?
案例一:
public class Demo08 {
public static void main(String[] args) {
int i = 1;
int j = 2;
System.out.println(i + "..." + j);//1...2
aaa(i, j);
System.out.println(i + "..." + j);//1...2
i = i + 1;
j = j + 1;
System.out.println(i + "..." + j);//2...3
}
public static void aaa(int i, int j) {
System.out.println(i + "..." + j);//1...2
i = i + 1;
j = j + 1;
System.out.println(i + "..." + j);//2...3
}
}
案例二:
public class Demo09 {
public static void main(String[] args) {
int[] arr = {12,13,14};
System.out.println(arr[0]);//12
System.out.println(arr[1]);//13
System.out.println(arr[2]);//14
aaa(arr);
System.out.println(arr[0]);//1
System.out.println(arr[1]);//2
System.out.println(arr[2]);//3
}
public static void aaa(int[] arr) {
System.out.println(arr[0]);//12
System.out.println(arr[1]);//13
System.out.println(arr[2]);//14
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
System.out.println(arr[0]);//1
System.out.println(arr[1]);//2
System.out.println(arr[2]);//3
}
}
形式参数:形参,在定义方法的时候,小括号里的变量就是形式参数
实际参数:实参,在调用方法的时候,传递里面的数据就是实际参数
方法的重载(Overload)?
什么是方法的重载呢?
是指在同一个类中,出现两个方法的名字相同,参数列表不同(参数的个数不同,数据类型不同,
对应的顺序位置不同)的两个方法,就称为方法的重载
方法的重载和返回值类型无关
例子:
public class Demo01 {
public void aaa() {
}
public void aaa(int i) {
}
public void aaa(int i, int j) {
}
public void aaa(double a, double b) {
}
public void aaa(int i, double a) {
}
public void aaa(double a, int i) {
}
/*public void aaa(double x, int y) {
}*/
/*public int aaa(double a, int i) {
return 1;
}*/
/*
public void aaa() {
}
*/
}