方法
在我们的日常生活中,会遇到各种各样的问题,而我们需要寻求这些问题的解决办法,也就是解决方法,所以方法在日常生活中也是无处不在的。在java中,我们去解决某个问题并找到这个问题的解决办法就是方法。方法中封装的是解决问题的具体代码实现的功能,而我们只需要调用这个方法名就可以去解决这个问题。像之前学过的随机数的调用,就是调用的nextInt()方法来实现随机数的产生。
定义方法的格式:
修饰符 返回值类型 方法名(参数列表…){
功能实现的具体代码
return;
}
方法格式分析:
修饰符:用于修饰该方法的各种状态,修饰符比较多,现在先是固定的,会面会逐渐进行接触的,public static,public权限修饰符,权限最大化,static,静态的,也是数据共享的意思。
返回值类型:方法实现功能返回结果的数据类型,返回结果什么类型就写什么类型。
方法名:方法名的定义遵循标识符的规则,第一个单词都小写,后面每个单词的首字母都大写。
参数列表:是否有未知数据的参与,没有就不定义
return:有两个作用,其一是返回这个功能的结果,其二是用于结束方法。
下面通过一个代码来演示方法定义的具体情况:
/*
需求:计算长方形的面积(在方法中实现这个功能)
思路:1、定义一个方法getArea()在方法中实现
2、修饰符:public static
3、返回值类型:计算长方形的面积返回后是一个整数类型的值,int
4、方法名:遵循标识符的定义规则getArea()
5、参数列表:在功能实现过程中,有未知的数据参与运算,长和宽,int length,int weight
6、return的是面积。
7、调用该方法的功能,在main方法中进行调用
*/
public class MethodDemo{
public static void main(String[] args){
//调用getArea()方法,传入长和宽的值
int area = getArea(4,8);
//打印该面积的值
System.out.println("该长方形的面积是:"+area);
}
//定义方法,实现功能的封装
public static int getArea(int length,int weight){
//计算面积的功能实现
//int area = length * weight;
return length * weight;
}
}
方法定义练习
练习一:打印三行三列的“*”矩形
/*
需求:打印三行三列的”*“矩形
思路:1、定义功能方法
2、修饰符:public static
3、返回值类型:在控制台打印图形即可 ,没有返回值类型void
4、方法名:符合标识符的定义规则即可,printRect()
5、参数列表:已经规定是三行三列,不需要定义参数列表
*/
public class MethodDemo_1{
public static void main(String[] args){
//调用功能方法
printRect();
}
//定义功能方法
public static void printRect(){
//使用for循环遍历打印矩形
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.print("*");
}
System.out.println();
}
}
}
练习二:键盘输入一个数并打印这个数
/*
需求:键盘输入一个数并打印这个数
思路:1、定义功能方法
2、修饰符:public static
3、返回值类型:需要返回输入的这个数,int
4、方法名:遵循标识符的定义规则即可,getNumber()
5、参数列表:没有未知数据的参与,只需要自己在键盘输入这个数即可
*/
import java.util.Scanner;
public class MethodDemo_2{
public static void main(String[] args){
//调用功能方法
//int num = getNumber();
System.out.println(getNumber());
}
//定义方法功能
public static int getNumber(){
//定义Scanner类,完成键盘的输入
Scanner sc = new Scanner(System.in);
//int number = sc.nextInt();
//返回输入的数据给调用者
return sc.nextInt();
}
}
练习三:打印指定M行,每行N个*号的矩形
/*
需求:打印指定M行,每行N个*号的矩形
思路:1、定义功能方法
2、修饰符:public static
3、返回值类型:打印图形,无返回值void
4、方法名:符合标识符的定义规则即可,printRect()
5、参数列表:需要自己去指定图形的行数和列数,int m,int n
6、调用功能方法
*/
public class MethodDemo_3{
public static void main(String[] args){
//调用功能方法
printRect(6,7);
}
//定义功能方法
public static void printRect(int m,int n){
//通过for循环遍历打印图形
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
System.out.print("*");
}
System.out.println();
}
}
}
练习四:求三个数的平均数
/*
需求:求三个数的平均数
思路:1、定义功能方法
2、修饰符:public static
3、返回值类型:求平均数结果需要返回这三个数的平均数的值,int
4、方法名:符合标识符的定义规则即可,getAvg()
5、参数列表:需要三个未知数据的参与,int a,int b,int c
6、调用功能方法
*/
public class MethodDemo_4{
public static void main(String[] args){
//调用功能方法
int avg = getAvg(4,8,9);
System.out.println("三个数的平均值是:"+avg);
}
//定义功能方法
public static int getAvg(int a,int b,int c){
//返回计算后的值
return (a+b+c)/3;
}
}
定义方法时的一些注意事项:
1、 方法写在类中,方法与方法不能嵌套,也就是说一个方法不能写进另一个方法中,
2、 在调用方法时方法名和参数列表一定不能写错,否则失败
3、 方法的返回值如果是void,ruturn可以省略不写,但是方法中return后面一定不能写其他语句,否则会访问不到编译失败
4、 方法的返回值类型必须和return的类型相匹配。
5、 方法不能够重复定义。
6、 在调用方法时,方法的返回值是void,调用的时候不能使用输出语句,没用返回值打印数据也就不存在,逻辑错误。
方法的重载
所谓的重载就是在同一个类中,功能的方法名可以一样,但是它的参数列表里面的数据类型和数据个数不一样。
下面的代码演示了重载的情况:
/*
重载的情况:求数据的和,个数和类型不确定,所以需要用到重载
*/
public class MethodOverload{
public static void main(String[] args){
//调用功能
int sum1 = add(3,5);
int sum2 = add(4,5,6);
double sum3 = add(2.1,6.3);
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
}
//求和的功能实现
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
public static double add(double a,double b){
return a+b;
}
}
重载的注意事项
1、 方法的参数列表必须不同(数据个数、数据类型、数据顺序)
2、 方法的重载与变量名无关
3、 方法的重载和返回值类型无关
4、 方法的重载和修饰符无关
所以方法的重载只和参数列表有关,和其他无关
转载于:https://blog.51cto.com/13502869/2048164