方法是什么?
方法(method)是:一段用来完成特殊作用的代码片段,类似于其它语言的函数
我们为什么需要方法?
因为:
(1)方法能够提高代码的复用性
(2)提高程序员打代码的效率
(3)有利于程序的维护
(4)使得整个代码变得清晰,简明
方法有声明格式吗?
方法的一般格式为:
修饰符 返回值类型 方法名(数据类型 变量名,数据类型 变量名,……){
……
return ……;
}
修饰符:Java修饰符是用来修饰类、变量、及方法的访问限定或类型限定。
返回值类型:我们返回调用处值的类型,也是事先约定好的返回值类型,但根据需求也会有没有返回值的情况这时我们要用到的是void
方法名:我们定义的方法的名字,(往往我们的方法名要求见名知意)
public class Ff {
public static int add(int num1,int num2){//在此我们事先约定好返回值的类型为int,但我们还可以约定为其它基本数据类型
//和引用数据类型
/*
定义一个方法,方法:对有特殊含义的代码进行提取,实际上就是一个代码块
特定功能的片段.
*/
int sum;
sum=num1+num2;
return sum;//返回值为sum
}
public static void main(String[] args) {
int sum=add(10,20);//对于方法的调用及返回值的接收
System.out.println(sum);
System.out.println(add(10,89));
}
}
public class Ff {
public static void add(int num1,int num2){
int sum;
sum=num1+num2;
System.out.println(sum);
}
public static void main(String[] args) {
add(10,20);//对于方法的调用
}
}
同时在此我们已经在我们所定义的方法中输出我们想输出的值,那我们在main方法中就不需要再接收返回值,直接赋予方法对应所需的值即可。
方法的重载是什么?
方法的重载是指一个类中方法名相同,形参列表不同的多个方法。
形参列表的不同表现为:
(1)个数不同
(2)数据类型不同
(3)顺序不同
public class Ff {
//方法的重载,方法名相同而形式参数不一样
public static void add(int num1,int num2){
System.out.println(num1+num2);
}
public static void add(int num1,double num2){
System.out.println(num1+num2);
}
public static void add(int num1,int num2,int num3){
System.out.println(num1+num2+num3);
}
public static void add(int num1,int num2,int num3,int num4){
System.out.println(num1+num2+num3+num4);
}
public static void main(String[] args) {
add(8,9,8);//通过这个,我们知,在重载的情况下,我们所调用的方法会自己选择最佳的方法(与之相对应的)。
add(2,9.8);
add(4,5,3,4);
}
}
怎么区分是否为方法的重载?
方法的重载只跟方法名和形参列表有关,与修饰符和返回值类型无关。
友友萌可以看这个,表面上我们看这两个方法好像是重载,但实际上并不是,它只是参数的名不同,但们知道的参数的名往往是可以一样的,我上述列取得三种形参列表的不同,他均没有一项符合
补充
基本数据类型的运算级也会影响这我们对方法的调用具体如下代码
public class Ff2 {
public static int add(int a){
System.out.println("-------a");
return a;
}
public static long add(long b){
System.out.println("------b");
return b;
}
public static float add(float c){
System.out.println("-----c");
return c;
}
public static double add(double d){
System.out.println("------d");
return d;
}
public static void main(String[] args) {
add(8);
}
}
public class Ff2 {
public static long add(long b){
System.out.println("------b");
return b;
}
public static float add(float c){
System.out.println("-----c");
return c;
}
public static double add(double d){
System.out.println("------d");
return d;
}
public static void main(String[] args) {
add(8);
}
}
我们可以看到我们add里面是int类型的可是选择的是long类型的,我们要补充的是
在没有对应数据类型时调用方法时会选择这个类型运算等级右边的那个,若右边那个没有,那么就再右边那个;
byte<char<short<int<long<float<double