java中的方法
方法: 将具有独立功能的代码块组织为一个整体,使其成为独立的功能集
无参数返回值的方法
最基础的方法, 就是执行一段代码, 定义格式: public static void 方法名 () {}
public class MethodDemo01 {
public static void main(String[] args) {
// 调用方法
fn();
}
// 定义一个方法, 作用是输出一个HelloWorld
public static void fn () {
System.out.println("HelloWorld");
}
}
方法必须先创建才能使用, 方法创建后不会直接运行, 需要手动调用。
有参数的方法
带参数的方法,可以在定义方法时设定参数,调用时传入。 定义格式: public static void 方法名(参数1,参数2) {方法体}
参数:方法定义时设定的变量, 在调用时传入。格式: int a
, 多个参数用,隔开
/*
完成一个方法, 输出传入两个整数中最大的数。
*/
public class MethodDemo2 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
// 方法调用,传入参数
outMax(num1, num2);
}
// 定义方法和参数 多个参数用 , 隔开
public static void outMax(int a, int b) {
if (a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}
形参: 方法定义时的参数, 相当于变量的定义;
实参:方法在调用时传入的传入, 相当于为变量赋值;
带返回值的方法
带返回值的方法, 方法执行后会返回数据, 可以用变量接收。定义格式:public static 返回类型 方法名(参数) {方法体}
返回值: 方法执行后返回的数据, 可以用变量接收。
/*
完成一个方法,返回两个数之和
*/
public class MethodDemo03 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 15;
// 调用方法, 使用变量接收返回值
int num3 = sum(num1, num2);
}
// 定义一个 返回值 为int 类型的方法, 接收两个int 类型的数, 将两个数的和返回
public static int sum(int a, int b) {
return a + b;
// return 是方法中用来返回数据的关键字
}
}
带返回值的方法:定义时要明确返回的数据类型,且用return 返回数据。如果没有返回数据使用 void。
return 返回的数据, 类型必须与定义的类型一致。
方法概述
方法数据定义通用格式
public static 返回类型 方法名(参数) {
...方法体
//如果数据类型非void
//return 数据;
}
定义解析:
- public class: 修饰符, 暂不讲解
- 返回类型:方法执行后返回数据的类型
- 方法名: 方法调用时的标识, 可以理解为变量名
- 参数: 数据类型 变量名。多个参数用 , 隔开 作用是接收调用是传入的数据
- 方法体: 方法的功能代码
- return: 方法返回数据的关键字 返回的数据与定义的返回类型要一致
定义方法:
1.明确返回值: 主要是明确是否有返回值, 没有则用void, 有则要明确返回值的类型。
2.明确参数: 主要是明确参数的数量和类型
调用方法:
1.有无返回值: void类型的方法直接调用即可, 非void类型使用变量接收返回值。
2.传入参数的类型和个数和定义时要一致。
方法重载
方法重载的概念: 同一个类中定义的同名方法之间的关系。
重载的条件:
- 在同一个类中定义
- 方法名相同
- 方法的参数不同, 参数类型或参数个数不同
public class Overloading {
public static void mian(String[] args) {
}
// 正确的重载
public static int fn(int a) {
return a;
}
public static double fn(double a) {
return a;
}
// 错误的重载, 参数相同不是重载
public static int err(int a) {
return a;
}
public static double err (int a) {
return a;
}
}
总结: 同一个类中, 名字相同的方法, 参数不同就是方法重载, 调用时根据参数进入不同的方法中。
方法中的参数传递
基本数据类型存储在栈内存中, 传递到方法中, 在方法中修改不会影响原数据。
引用数据内容传递的是指针,数据存储在堆内存中, 如果在方法中操作堆的数据, 原数据改变。
public class ArgsDemo {
public static void main(String[] args) {
// 基本数据类型
int a = 100;
System.out.println(a); // 100
fn1(a);
System.out.println(a); // 100;
int[] arr = {100, 200, 300};
System.out.println(arr[0]); // 100
fn2(arr)
System.out.println(arr[0]); // 200
}
public static void fn1(int a) {
a = 200;
}
public static void fn2 (int[] arr) {
arr[0] = 200;
}
}