java---方法

2023-10-17 09:09:24 浏览数 (3)

方法对一段功能代码进行集中管理,每个同学在某一时刻只做一件事情。单一职责。

5.1 方法的分类

构造方法

在创建对象时自动调用

成员方法

使用对象进行调用

静态方法

static 使用类名进行调用

() -->代表的就是方法

5.2 方法的创建

代码语言:javascript复制
语法:
访问修饰符  [static]   返回值类型  方法名([形式参数]){
		方法体
}

返回值类型

分为两种

1、void 没有返回值

2、有返回值

代码语言:javascript复制
2.1、八大基本数据类型   int  double  float   long   byte   short   char   boolean

2.2、引用数据类型 (所有的类都被称之为类型) String

代码语言:javascript复制
方法名:自己命名,与变量的命名规则一样

一个变量名是否合法的三条规则


1、java中的变量名是由【A-Z】【a-z】字母,【0-9】数字,_下划线,$符组成


2、变量名的首字符不能以数字开始,以习惯性的做法都是以字母开头


3、不能出现java的关键字  public class static void  int double char boolean byte short long float  

一个变量名是否合理的规则


4、如果变量名由两个或多个单词组成,使用**驼峰命名法**,  

对变量,方法的名称要求第一个单词的首字符小写,第二个单词的首字符大写,比如: firstNum,

如果是类名要求所有单词的首字符都大写 比如:HelloWorld


5、变量名要具体一定的可读性,见名知义. diYiGeShu

[形式参数]:

这里的参数就是定义变量,多个形式参数之间用逗号分隔,方法代表着一个动作,你思考一下,只要是有动作的事情都放在方法里-->动词

形式参数的变量用于接收调用处发送过来完成这个功能的数据的

5.3 按编写方式进行分类

  • 5.3.1 无返回值,无参数 public [static] void 方法名(){ }
  • 5.3.2 有返回值,无参数 public [static] 返回值类型 方法名(){ }
  • 5.3.3 无返回值,有参数 public [ static] void 方法名([形式参数]){ }
  • 5.3.4 有返回值,有参数 public [static] 返回值类型 方法名([形式参数]){ }

5.4 static 静态方法

静态方法在类加载的时候就会对方法进行加载,方法要加载过才能执行。

成员方法在创建对象的时候才进行加载,加载时间后于静态方法,所以静态方法中不能调用成员方法。

方法要写到public class 类名{ 写方法 }。

不要写到 public static void main(String[] args){这里面不要写}

5.4.1 无返回值,无参数案例

代码语言:javascript复制
public static void main(String[] args) {

       //调用

       printNum1_10();

      

    }

/*

    打印1-10之间所有的数

    * 方法的定义

    * 方法定义出来不会自动执行


    访问修饰符 static void  方法名(){

           打印1-10之间所有的数

    }

    * */

    public static  void printNum1_10(){

        for (int i = 1; i <= 10 ; i  ) {

            System.out.println(i);

        }

    }
代码语言:javascript复制
public class Demo5 {

    public static void main(String[] args) {

        printNum1_10();

        System.out.println("程序结束");

    }


    /**

     *

     * 访问修饰符 [static] 返回值类型 方法名(){

     *      打印1-10之间所有的数

     * }

     */

    public static void printNum1_10(){

        for (int i = 1; i <= 10; i  ) {

            System.out.println(i);

            if(i==5){

                //break;//如果是break跳出当前循环最后的方法执行结束一定会打印,如果使用return 方法执行结束不会打印

                return;//return如果使用在无返回值的方法中return;结束当前方法的执行

            }

        }

        System.out.println("方法执行结束");

    }

}

5.4.2 有返回值,无参数

使用return

语法: return 返回的数据; --> 将数据返回到调用处 结束当前方法的执行,一次只能返回一个结果

代码语言:javascript复制
public static void main(String[] args) {

       //调用

      //  printNum1_10();

        //程序调试F8 单步执行  F7 逐条执行

       int sum = addSum();


        System.out.println("调用方法得到的结果:" sum);

    }

/*

  计算1-10之间所有数的和

    有返回值无参数的方法

     */

    public static int addSum(){

        int sum=0;

        for (int i = 1; i <= 10; i  ) {

            sum =i;

        }

        return sum;

    }

5.4.3 无返回值,有参数

代码语言:javascript复制
import java.util.Scanner;


public class Main {

    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);

        System.out.println("请输入一个数:");

        int num=input.nextInt();


        sumNum(num);  //100是一个具体的值   实际参数 调用方法程序就会进入到这个方法中去执行

    }


    /*

    * sumNum看成是在另外一台电脑上执行,另一台电脑无法操作

    * */

    public static void sumNum(int num){  //是一个变量的定义  形式参数


        int sum=0;

        for (int i = 1; i <= num; i  ) {

            sum =i;

        }

        System.out.println(sum);

    }


}

sumNum(100); 调用处小括号中传入的值叫实际参数

public static void sumNum(int num) 定义方法的语法这里小括号中的变量叫形式参数

执行流程就是将实际参数的值赋值给形式参数。并且,多个参数之间用逗号分隔,传入的类型位置要一一对应

问题,写一个方法来求圆的面积 PIXrXr;

代码语言:javascript复制
import java.util.Scanner;


public class Main2 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个半径:");

        int r=input.nextInt();

        area(r,3.14);

    }


    public static void area(int r,double pi){

        System.out.println(r*r*pi);

    }

}
注意:
area(r,3.14);
public static void area(int r,double pi)
 多个参数之间用逗号分隔,类型,位置,数量都要一一对应

5.4.4 有返回值,有参数

代码语言:javascript复制
import java.util.Scanner;


public class Main3 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个数:");

        int num=input.nextInt();


        int result=sumNum(num);//sumNum(num);[调用方法执行]和sumNum(int num)[定义方法]不是同一个变量,num里的值赋值给定义方法这里的num变量

        System.out.println(result);

    }

    public static int sumNum(int num){  //是一个变量的定义  形式参数


        int sum=0;

        for (int i = 1; i <= num; i  ) {

            sum =i;

        }

        return sum;

    }

}

5.5 方法的好处

1、方法可以让以前零乱的代码,变得整齐

2、冗余代码可以重复利用

题目1: 求1-10之间所有数的积,并打印结果,定义方法实现

题目2:统计1-输入的一个数的区间中,能同时被3和5整除的数的个数

题目3:输入一个年份,月份,日期,计算这个日期是当年的第几天 定义方法实现

代码语言:javascript复制
import java.util.Scanner;


public class Demo5 {

    //1990 1 1 星期一

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("请输入一个年份:");

        int year = input.nextInt();

        System.out.println("请输入一个月份:");

        int month = input.nextInt();

        //算输入的日期到1990-1-1之间的天数总和

        int sum=getSum(year,month);

        //求输入的日期的月份有多少天

        int day = getMonthDay(month,year);

        //显示日历结果

        show(sum,day);


    }


    public static int getSum(int year,int month){

        int sum = 0;

        //1、求整年的总天数

        for (int i = 1990; i < year; i  ) {

            sum =getYearDay(i,366,365);

        }

        //2、求今年整月的总天数

        for (int i = 1; i < month; i  ) {

            sum =getMonthDay(i,year);

        }

        //当前日期到1990-1-1的总天数

        return sum;

    }


    public static void show(int sum,int day){

        int count = 0;

        System.out.println("一t二t三t四t五t六t日");

        for (int i = 1; i <= sum % 7; i  ) {

            System.out.print(" t");

            count  ;

        }


        for (int i = 1; i <= day; i  ) {

            System.out.print(i   "t");

            count  ;

            if (count % 7 == 0) {

                System.out.println();

            }

        }

    }


    /**

     * 判断年是平年还是闰年,根据年份返回不同的结果

     * @param year    年

     * @param result1 结果1

     * @param result2 结果2

     * @return  根据年的判断从结果1和结果2中返回其中的一个

     */

    public static int getYearDay(int year,int result1,int result2){

        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

            return result1;

        } else {

            return result2;

        }

    }


    /**

     * 判断month是几月份,返回对应的天数,year的作用,是在2月的时候用于判断闰年平年的天数

     * @param month  月份

     * @param year  年份

     * @return  月份的天数

     */

    public static int getMonthDay(int month,int year){

        switch (month) {

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            case 10:

            case 12:

                return 31;  //因为return在方法中有终止方法执行的效果,所以不需要break


            case 4:

            case 6:

            case 9:

            case 11:

                return  30;


            default:

                //在该方法又调用了getYearDay() ,getYearDay方法有返回值,

                // 这里直接return 代表将getYearDay方法的值直接返回到该方法的调用处

                 return getYearDay(year,29,28);


        }

    }

}

谢谢大家,今天的知识总结就到这啦!希望大家多多支持,我在很多平台都有博客论文,也希望大家多多照顾,栓Q了!!!

0 人点赞