
方法介绍?
-
什么是方法?
- 方法就是一段代码的集合,这段代码完成了某个功能,业务场景。
- 一个方法就是一个功能。
-
为什么使用方法?
避免main方法中的代码堆积,造成后期代码拓展和维护的成本增加。
-
如何使用方法?
- 格式与main方法大致相同。
public static void(返回类型) 方法名(参数列表){} - 在main方法中通过方法名调用需要执行的方法。
- 方法()中的内容,参数,就相当于一根天线。用来接收调用者发送的数据信息。
- 方法计算出来的值,其他的方法也可以使用。
- 一个方法如果声明了void,证明该方法无返回值。不能写return返回语句。
- 如果一个方法存在返回结果,方法的void应修改为返回结果的数据类型。
- 在方法体的最后一行可以写return语句返回具体的值。
- 格式与main方法大致相同。
-
调用方法流程

方法重载
-
方法重载的含义
-
在一个类中编写方法时,如果出现多个方法的所做的事情是一样时,为了满足见名知意的规范,我们可以起同样的方法名。
-
在一个类中定义同名方法是可以的,并将之称之为重载。
-
-
注意事项
-
就进原则:当调用语句中的数据类型,在调用方法中找不到完全匹配的时候,它会按照就近原则,选取调用方法。
就近顺序:byte>short>int>char>long>float>double.从小往大的方向匹配。
如果没有基本数据类型,就会寻找基本数据类型的包装类,最后才会寻找可变参数。
当出现两个方法都符合匹配次序的话,程序会报错。
-
两同三不同:只有符合两同和三不同中的一个时,方法才能重载。
两同:同名,同类
不同:参数列表类型不同,参数列表顺序不同,参数列表长度不同。
-
代码示例
- 计算圆柱体的面积
/**
计算圆柱体的表面积
1:声明一个方法计算圆的面积
2:声明一个方法矩形的面积
3:声明一个方法计算累加和
1:如何声明?
照着main方法抄
2:这个方法完成什么功能
知道了方法中的逻辑如何编写
3:这个方法的执行需不需要帮忙?
参数列表
1:方法就是一个功能模块,完成某个功能。
不要重复造轮子。方法是可以复用的。
2: 变量:首字母小写 其它每个单词的字母均大写
类: 首字母大写 其它每个单词的字母均大写
方法:首字母小写 其它每个单词的字母均大写
*/
import java.util.Scanner;
public class Demo05{
public static void main(String[] args){
System.out.println("请输入计算的圆的半径>>>>>>");
//创建一个Scanner对象
Scanner input = new Scanner(System.in);
//通过Scanner对象中的nextInt方法获取用户输入的int值
int r = input.nextInt();
double area = getArea(r);
System.out.println("请输入计算的圆柱体的高>>>>>>");
//通过Scanner对象中的nextInt方法获取用户输入的int值
int width = input.nextInt();
//计算半径为r的圆的周长
double length = getZC(r);
//计算矩形的表面积
double jArea = getArea(length,width);
//计算圆柱体的表面积
double sumArea = getYZT(area,jArea);
System.out.println("以半径为"+r+"的,高为"+width+"的圆柱体的表面积是:"+sumArea);
}
//调用语句的参数名和方法名参数列表的参数名可不相同
public static double getYZT(double yArea,double jArea){
return yArea*2+jArea;
}
/**
//@+单词 注解
@param r 需要计算的圆的半径
@return double 返回计算的圆的周长 */
public static double getZC(int r){
//参数判定 代码的健壮性更好 防御性编程
if(r==0){
return 0;
}
//计算周长
double pi = 3.14;
double zc = 2*pi*r;
//返回周长
return zc;
}
/** 计算矩形的面积 */
public static double getArea(double length,int width){
double area = length*width;
//System.out.println(area);
return area;
}
/** 计算半径r的圆的面积 */
public static double getArea(int r){
//声明一个变量存放pi的值
double pi = 3.1415;
//声明圆的半径
//int r = 4; //计算面积
double area = pi*r*r;
System.out.println("半径是"+r+"的圆的面积是"+area);
return area;
}
}
//以半径为4的,高为4的圆柱体的表面积是:201.008
- 面试题
按照最近原则判定以下程序输出内容:
public class Demo07{
public static void main(String[] args){
char ch = 'A'; info(ch);
}
public static void info(char ch){
System.out.println("info char");
}
public static void info(int ch){
System.out.println("info int");
}
public static void info(long ch){
System.out.println("info long");
}
public static void info(double ch){
System.out.println("info double");
}
}
//执行完全匹配的,结果输出info char
public class Demo08{
public static void main(String[] args){
info(12,12.1f);
}
public static void info(char ch,double d){
System.out.println("info char ch,double d");
}
public static void info(int ch,double d){
System.out.println("int ch,double d");
}
public static void info(long ch,float d){
System.out.println("long ch,float d");
}
}
//程序报错,因为存在两个可以调用的方法
public class Demo06{
public static void main(String[] args){
info(12);
}
public static void info(long l){ //基本数据类型,编号1
System.out.println("info long l");
}
public static void info(Integer in){ //基本数据类型的包装类,编号2
System.out.println("Integer in");
}
/* jdk1.5之后,支持可变参数 */
public static void info(int ... ins){ //可变参数,编号3
System.out.println("Integer ... ins");
}
}
//当编号1,2,3都存在时,执行,编号1;当只有编号2,3时,执行编号2;只存在编号3时,执行编号3.
网友评论