方法
1.方法作用:
减少代码,实现代码复用;方便后期维护.
2.方法
实现特定功能的一段独立代码块.
3.方法的声明
3.1:语法
访问修饰符 扩展修饰符[static/abstract/final] 返回值类型 方法名
(数据类型1 参数1,数据类型2 参数2...){
方法体(代码块);
return 结果;
}
3.2:访问修饰符
[public/protected/default/private],一般用public修饰符.
作用限制方法 使用权限.
3.3:返回值类型
方法执行完后想返回给调用者的结果的数据类型.
java中任何数据类型都可以作为方法的返回值类型.
如果方法执行完后不想返回任何结果给调用者void.
3.4:方法名
采用驼峰式命名法.
3.5:参数
方法名后台小括号中内容就是参数.执行这个功能需要的材料.参数可以由0个到多个参数,参数之间用逗号隔开.方法声明时参数前面一定要带数据类型.
在方法中,将声明的参数当作已知的局部变量来用.
3.6:return作用:
- 第一个作用:结束方法,可以在方法的任何地方使用.
- 第二个作用:结束方法的同时,返回一个结果给调用者.注意:如果方法的返回值类型不为void是其他类型,方法中一定要return 结果,且结果类型返回值类型一致.
3.7:方法与方法之间是平级关系,不能嵌套.
3.8:方法不调用不执行.
3.9:方法分类:
3.9.1:无参无返回值的方法
//eg:/**
*无参无返回值的方法
*/
public static void printline(){
System.out.println("---------");
}
3.9.2:有参无返回值的方法
//eg:/**
*有参无返回值的方法
*/
public static void showMyself(String name,int age){
System.out.println("大家好,我叫"+name+",年龄"+age);
}
3.9.3:无参有返回值的方法
//eg:/**
*无参有返回值的方法
*/
public static String sweepup(){
System.out.println("大家在大扫除");
return "地扫得很干净";
}
3.9.4:有参有返回值的方法
//eg:/**
*声明有参有返回值的方法,计算两数之和
*/
public static double sum1(double num1,double num2){
double sum=num1+num2;
return sum;
}
4.方法的调用:
- 无返回值的方法调用的语法:方法名([参数1,参数2…]);
- 有返回值的方法调用的语法:数据类型 变量=方法名([参数1,参数2…]);
eg://无参无返回值的方法的调用
//printline();
//有参无返回值的方法的调用
//showMyself("张三",18);
//无参有返回值的方法的调用
String result2= sweepup();
System.out.println("大扫除的结果为:"+result2);
//有参有返回值方法的调用
//double result= sum1(1,1);
//System.out.println("两数之和为:"+result);
5.参数
-
形参:方法声明时的参数叫形参.形参的参数前面一定要写数据类型.
-
实参:方法调用时的参数叫实参.实参传具体的值,实参前不可以写数据类型.
-
传参:把实参的数据传给形参.
注意: 对同一个方法来说,它的形参和实参的参数个数相同,类型要一致,参数顺序要匹配.题目1:抽出一个方法打印一个5行直角三角形,打印的图形从键盘上接收.
题目2:抽出一个方法打印一个直角三角形,打印的图形和行数从键盘上接收.
6.方法重载的三个条件:
- 在同一个类中
- 方法名相同
- 参数列表不同(个数不同,数据类型不同,参数顺序不同)
eg:public class MethodTest2{
/**
*程序的入口方法
*/
public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
System.out.println("请输入你要打印的直角三角形的图形:");
String s=input.next();
System.out.println("请输入你要打印的行数:");
int row=input.nextInt();
//调用打印直角三角形的方法
printTriangle(s);
}
/**
*题目1:打印一个5行直角三角形,打印的图形从键盘上接收.
*/
public static void printTriangle(String sign){
System.out.println("-----------一个参数-----------");
//外层循环控制行数
for(int i=1;i<=5;i++){
//内层循环控制每个打印图形个数
for(int j=1;j<=i;j++){
System.out.print(sign);
}
System.out.println();
}
}
}
/**
*题目2:抽出一个方法打印一个直角三角形,打印的图形和行数从键盘上接收.
*/
public static void printTriangle(String sign,int row){
System.out.println("----------两个参数------------");
//外层循环控制行数
for(int i=1;i<=row;i++){
//内层循环控制每个打印图形个数
for(int j=1;j<=i;j++){
System.out.print(sign);
}
System.out.println();
}
}
7.方法重载的作用
解决在同一个类中,功能相同的方法的命名问题和调用问题.
8.方法重载的调用
程序根据重载方法的参数列表来判断调用哪个方法.
递归
9.递归
方法自身调用自身.
10.使用递归和条件:
- 将原问题拆分成若干个子问题,子问题的解决方法与原问题一样.
- 原问题依赖于所有子问题的解决.
- 递归一定要有出口.
//eg:
public class DiGuiTest1{
/**
*程序的入口方法
*/
public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int count=input.nextInt();
if(count>=1){
int result2=factorial(count);
System.out.println(count+"的阶乘结果为:"+result2);
}else{
System.out.println("你的输入有误!");
}
}
/**
*计算一个数的阶乘,返回当前这个数的阶乘结果
*/
public static int factorial(int num){
int result=0;
if(num==1){
result=1;
}else{
//方法自身调用自身
result=num*factorial(num-1);
}
return result;
}
}
11.递归选用
简单的问题能用递归解决的,也可以用循环结构解决;复杂问题能用递归解决的,不一定能用循环结构.
个人笔记,思路,仅供参考