方法是完成特定功能的代码块。
定义方法可以将功能代码进行封装,
便于对该功能进行复用,提高代码的复用性
方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
方法的格式说明
要想写好一个方法,就必须明确两个东西
需求:求两个数据之和的案例
public class Demo_method {
public static int add(int a,int b){ //定义求和方法
int sum=x+y;
return sum;
}
}
int x=10;
int y=20;
add(x,y); //单独调用
int x=10;
int y=20;
System.out.println(add(x,y)); //输出调用
int x=10;
int y=20;
int sum=add(x,y);
//sum可以进一步操作
System.out.println(sum); //赋值调用
void返回类型的方法:只能单独调用!不能用于打印!
注意:返回值类型和参数列表中参数类型没有关系!
定义功能,方法中需要定义什么就定义什么,不需要的就不要定义。
public class Demo_method {
public static void main(String[] args){ //1.从main方法开始执行
int x=10;
int y=20; //2.定义两个int类型变量
int sum=add(x,y); //3.调用add方法,
//7.将方法add的结果30返回给sum
System.out.println(sum);
}
public static int add(int a,int b){ //4.将x和y分别传递给a和b;赋值a=10,b=20
int sum=a+b; //5.执行语句把a和b相加赋值给sum
return sum; //6.把sum结果30返回来
}
}
需求:键盘录入两个数据,比较两个数是否相等
//比较两个数是否相等
/*分析
返回值类型boolean
参数列表 int a,int b
*/
import java.util.Scanner;
public class Dome_function {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数据");
int x=sc.nextInt();
System.out.println("请输入第二个数据");
int y=sc.nextInt();
boolean result=compare(x,y);
System.out.println(result);
}
public static boolean compare(int a,int b){
//if语句实现
/*if(a==b){
return true;
}else {
return false;
}
*/
//三元改进
//boolean x=(a==b)?true:false;
//return x;
//继续改进
//return (a==b)?true:false;
//最终改进
return a==b;
}
}
注意事项
需求:根据键盘录入的行数和列数,在控制台输出星形
public static void printStar(int a,int b){
for (int x=1;x<=a;x++){ //外循环决定行数
for (int y=1;y<=b;y++){ //内循环决定列数
System.out.print("*");
}
System.out.println();
}
}
printStar(6,7)
System.out.println(printStar(6,7));
报错如下
错误:(13, 37) java: 此处不允许使用 '空' 类型
3. 赋值调用(错误)
void v=printStar(6,7)
报错如下
错误:(13, 9) java: 非法的表达式开始
正确完整代码如下
// 需求:根据键盘录入的行数和列数,在控制台输出星形
import java.util.Scanner;
public class Dome_function2 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入行数");
int x=sc.nextInt();
System.out.println("请输入列数");
int y=sc.nextInt();
printStar(x,y);
//void v=printStar(6,7);
//System.out.println(printStar(6,7));
}
public static void printStar(int a,int b){
for (int x=1;x<=a;x++){ //外循环决定行数
for (int y=1;y<=b;y++){ //内循环决定列数
System.out.print("*");
}
System.out.println();
}
}
}
方法重载概述:
参数列表不同:
求和案例
public class FunctionOverload {
public static void main(String[] args){
System.out.println(sum(10,30));
System.out.println(sum(10,30,88));
System.out.println(sum(10.59f,30.55f));
System.out.println(sum(10.89f,30,83));
}
public static int sum(int a,int b){
System.out.println("int");
return a+b;
}
public static int sum(int a,int b,int c){
System.out.println("int");
return a+b+c;
}
public static float sum(float a,float b){
System.out.println("float");
return a+b;
}
public static float sum(float a,int b,int c){
System.out.println("float");
return a+b+c;
}
}
运行结果:
int
40
int
128
float
41.14
float
123.89
如何判断几个函数是否是重载的呢?