方法
本章重点
方法
含义
方法就是完成了某个具体功能的一个代码的集合;
优点
1)避免了main方法中的代码堆积,
2)可以减少后期的扩展和维护的成本。
例题解析
//求圆柱体的表面积
import java.util.Scanner;
public class Demo01{
public static void main(String[] args){
System.out.println("请输入圆的半径:");
Scanner input = new Scanner(System.in);
int r = input.nextInt();
System.out.println("请输入圆柱体的高:");
int width = input.nextInt();
//计算半径为r的圆的面积
double area = getCArea(r);
//计算半径为r的圆的周长
double length = getPerimeter(r);
//计算矩形的表面积
double jArea = getRArea(length,width);
//计算圆柱体的表面积
double surfaceArea = getSurface(area,jArea);
System.out.println("半径是"+r+"高是"+width+"的圆柱体的表面积是:"+surfaceArea);
}
//圆柱体的表面积
public static double getSurface(double yArea,double jArea){
return yArea*2+jArea;
}
//圆的周长
public static double getPerimeter(int r){
if(r==0){
return 0;
}
double pi = 3.14;
double perimeter = 2*pi*r;
return perimeter;
}
// 计算矩形的面积
public static double getRArea(double length,int width){
double area = length*width;
return area;
}
//计算半径r的圆的面积
public static double getCArea(int r){
double pi = 3.14;
double area = pi*r*r;
return area;
}
}
执行结果
注意
对于方法的命名:首字母小写,其它每个单词首字母大写(见名知意)
方法重载
定义
1)在一个类中定义的同名不同参数类型(包括参数类型、顺序、个数)的方法,称为方法重载;
2同3不同
(1)同名
(2)同类
(3)参数类型不同
(4)参数个数不同
(5)参数顺序不同
例题分析
public class Demo02{
public static void main(String[] args){
add();
}
public static void add(){
int num1 = 10;
int num2 = 20;
System.out.println(num1+num2);
}
public static int add(int a,int b){
return a+b;
}
}
执行结果
方法重载面试题
遵循原则:最近最优
char
byte short int long float double
如果没有基本数据类型 接下来找基本数据类型的包装类 才会找可变参数
例题分析1
public class Demo03{
public static void main(String[] args){
char ch = 'A';
info(ch);
}
public static void info(char ch){
System.out.println("ch");
}
public static void info(int ch){
System.out.println("ch int");
}
public static void info(long ch){
System.out.println("ch long");
}
public static void info(double ch){
System.out.println("ch double");
}
}
执行结果
分析
根据方法重载的最近最优原则:我们不难知道ch是一个char类型的变量,而在重载方法中刚好有一个参数类型为插入的方法,因此调用该方法并执行
例题分析2
public class Demo04{
public static void main(String[] args){
info(14,15.6f);
}
public static void info(char ch,double d){
System.out.println("选择aA");
}
public static void info(int ch,double d){
System.out.println("选择bB");
}
public static void info(long ch,float d){
System.out.println("选择C");
}
}
执行结果
分析
看代码可知,在调用方法时参数类型是(int,float),根据最近最优原则我们可以先排除第一个重载方法;然后再比较第二个和第三个方法参数类型。在第二个重载方法中第二个数据类型需要转换,而在第一个重载方法第一个数据类型需要转换所以无法区分选用哪个方法编译时会报错
例题分析3
public class Demo05{
public static void main(String[] args){
info(12);
}
public static void info(long l){
System.out.println("info long l");
}
public static void info(Integer in){
System.out.println("Integer in");
}
}
执行结果
分析
根据最近最优原则 先会找基本数据类型,如果没有基本数据类型,接下来找基本数据类型的包装类 最后找可变参数;在我们这个样例中有可转换的基本数据类型因此会选择重载方法一;若没有这个重载方法一,会选择重载方法二。
结束语
在方法中重点要知道重载方法的含义、2同3不同和相应的最近最优原则。