文章目录
一、什么是方法?
在Java中的方法就是一段可重复的代码块,用于执行特定的任务。它们可以接受参数并返回值,也可以不接受参数或不返回值。
方法可以在程序中任何地方调用,使代码更加模块化和易于维护。
在Java中,方法必须定义在类中,可以是静态的或非静态的,并且必须在调用它们之前进行声明或定义。
方法的声明包括方法名、返回类型、参数列表和方法体。方法名用于标识方法,返回类型指定方法返回的数据类型,参数列表指定方法接受的参数类型和数量,方法体包含实际的代码。方法可以被其他方法调用,也可以被同一个类中的其他方法调用。
方法的重载是指在同一个类中定义多个具有相同名称但参数列表不同的方法;调用时根据传递的参数而决定调用哪个方法。这使得程序员可以使用相同的方法名来执行不同的任务。
二、方法的定义语法
语法:
public static 返回类型 方法名([参数列表]){ //这里的中括号内的内容表示可有,可无
代码
}
使用方法:
方法名([实参列表]);
三、方法的使用
3.1 无参无返回值
/*语法:
public static void 方法名(){
代码
}
void在这里表示无返回值类型
方法名的小括号内不命名形参
*/
public class Test {
public static void main(String[] args) {
//调用方法: 语法。 方法名();
fun();
fun2();
fun();
fun();
fun2();
fun();
}
public static void fun(){
System.out.println("#############################");
}
public static void fun2(){
System.out.println("How old are you");
}
}
3.2 有参无返回值
/*参数列表: 数据类型 参数名,数据类型 参数名
public static void 方法名(参数列表){
代码
}
*/
public class Test {
public static void main(String[] args) {
sum2(1,10);//传递实参
sum2(20,50);
}
// public static void 方法名(参数){}
//参数: 数据类型 变量名;
//请m~n的和。 比如: 1~10和 20~50和
public static void sum2(int m,int n){//形参接收传递过来的实参
int sum=0;
for(int i=m;i<=n;i++){
sum+=i;
}
System.out.println(m+"~"+n+"的和:"+sum);
}
}
3.3 无参有返回值
/*
public static 数据类型 方法名(){
代码
}
*/
public class Test {
public static void main(String[] args) {
int a= fun(); //必须使用一个变量来接受方法的返回值。
System.out.println(a);
}
//编写一个方法: 随机返回一个整数。
public static int fun(){
Random random = new Random();
int num = random.nextInt(100);
return num;
//如果方法有返回类型则必须使用return 把结果返回给调用者。
}
}
3.4 有参有返回值
/*
public static 返回类型 方法(参数列表){
代码
}
*/
public class Test {
public static void main(String[] args) {
int a = fun(1, 10);//调用方法,用一个变量接收返回值
System.out.println("1~10的和:"+a);
int b = fun(10, 30);//调用方法,用一个变量接收返回值
System.out.println("10~30的和:"+b);
}
//m~n的和
public static int fun(int m,int n){
int sum=0;
for(int i=m;i<=n;i++){
sum+=i;
}
return sum;//方法有返回类型,用return返回结果
}
}
四、方法重载
4.1 什么是方法的重载
方法的重载是指在同一个类中定义多个具有相同名称但参数列表不同的方法;调用时根据传递的参数而决定调用哪个方法。这使得程序员可以使用相同的方法名来执行不同的任务。
4.2 方法重载使用
public class Test01 {
public static void main(String[] args) {
add(10.5,15.0);
}
//求和--两个整数的和
public static int add(int a,int b){
System.out.println("~~~~add(int a,int b)~~~~~");
int r=a+b;
return r;
}
//求和-两个小数的和
public static double add(double a,double b){
System.out.println("===add(double a,double b)====");
double r=a+b;
return r;
}
//求和-一个整数和一个小数
public static double add(double a,int b){
System.out.println("*****add(double a,int b)****");
double r=a+b;
return r;
}
}
五、可变参数的方法
调用方法时可以根据需要传递若干个参数值。重点在于参数列表的使用,可变参数的命名:数据类型… 参数名 (重点:必须要三个点…)
/*
public static 返回类型 方法(数据类型... 参数名){
代码
}
*/
public class Test {
public static void main(String[] args) {
fun(10,15,158);
}
public static void fun(int... a){ //数组类型,可变参数
System.out.println("~~~~~~"+ Arrays.toString(a));
//遍历a数组
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
System.out.println("=============");
for (int b : a) {
System.out.println(b);
}
}
}
六、值传递和引用传递
值传递:在调用方法时,实参拷贝一份值传递给形参,在方法内该形参(实参)的修改不影响到原来的实参。
引用传递:调用方法时,实参把自己的存储值的地址传递给形参,此时方法内对该参数值的改变,就是对该实参的实际操作。
public class Test {
public static void main(String[] args) {
// int b = 20;
// fun(b);
// System.out.println("b========" + b);
int[] c={1,10,20};
System.out.println(c);
fun(c);
System.out.println(c[0]);
}
//基本类型[byte short int long float double boolean char]传递: 相当于做了copy功能
public static void fun(int a) {
a = 15;
}
//实参把自己的存储值的地址传递给形参
public static void fun(int[] a) {
a[0] = 15;
}
}
总结
注意:
1.方法的调用注意是否有返回类型,有返回类型必须要有return返回结果。
2.方法重载:同名但是参数列表数量不同。
3.可变参数的方法:中间加的点必须三个,不能多不能少。