Java SE-Method

Java SE-Method

1、方法的定义和调用

Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码

方法包括以下要素:

  • 修饰符:可选,告诉编译器如何调用方法,定义方法的访问类型。如public,static(可以直接调用,不带的话需创建对象调用)

  • 返回值类型:方法可以有返回值,必须有return语句放方法最后,如:int,double,string,等;方法可以没有返回值,如:void,有return语句,执行后跳出方法,但不用返回值。

  • 方法名:方法的实际名称,表达方法的具体作用即可。

  • 参数类型:参数可以在方法调用时传递值给方法,(void)方法可以不含参数;

形式参数:方法被调用时接收外界输入的数据;

实参:调用方法时实际传给方法的数据。

  • 方法体:方法保护的具体语句,定义该方法的功能。

    public class Demo01 {
       public static void main(String[] args) {
           System.out.println(sum(1,2));
           min(1,2);
           min(2,1);//方法调用时直接调用方法!
      }
       public static int sum (int a,int b){//静态的方法才能直接调用,否则要new对象
           return (a+b);
      }
       public static void min(int a,int b){//void表示无类型,表示无返回值,方法调用时直接调用方法!
           if(a<b){
               System.out.println("a最小");
          }else{
               System.out.println("b最小");
          }
           return;
      }
    }
    public class Demo02 {
       public static void main(String[] args) {
           System.out.println(max(10,20));
           System.out.println(max(20,20));
      }
       public static int max(int a,int b){
           int max = 0;
           if(a==b){
               System.out.println("a==b");//在return之前可以输出
               return 0; //直接终止方法,返回数值0

          }
           if(a>b){
              max = a;
          }else {
               max = b;
          }
           return max;//除viod类型方法,其他类型方法必须带返回值

      }
    }

    2、方法的重载

    1. 方法名时一样的

    2. 参数类型,个数可以不一样

    3. 调用时虚拟机根据实参的类型调用具体函数

    public class Demo01 {
       public static void main(String[] args) {
           System.out.println(sum(1,2));
           System.out.println(sum(1.0,2.9));
      }
       public static int sum (int a,int b){//静态的方法才能直接调用,否则要new对象
           return (a+b);
      }
       public static int sum (double a,double b){//这里改了数据类型
           return (int)(a+b);//这里强制转换了数据类型
      }

    }

     

    3、命令行传递参数

    package com.tang11.method;//带包的类,在cmd运行时很麻烦

    public class Demo03 {
       public static void main(String[] args) {
           for (int i = 0; i < args.length; i++) {
               System.out.println("this is"+i+"code:"+args[i]);//cmd编译要英文的,不然容易出错
          }
      }
    }

     

    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src\com\tang11\method>javac Demo03.java

    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src\com\tang11\method>java Demo03
    错误: 找不到或无法加载主类 Demo03
    //上一级文件夹
    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src\com\tang11\method>cd ../
    //上一级文件夹
    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src\com\tang11>cd ../
    //上一级文件夹
    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src\com>cd ../
    //运行class文件
    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src>java com.tang11.method.Demo03

    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src>this tang home
    'this' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    //输入命令参数
    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src>java com.tang11.method.Demo03 this my home
    this is0code:this
    this is1code:my
    this is2code:home

    C:\Users\86152\Desktop\study\code\JavaSE\基础语法\src>

    4、可变参数

    1. 一个方法只能有一个可变参数

    2. 可变参数要放在参数的最后面

    3. 可变参数相当于一个数组,如果如果参数少于方法调用的数组数量会报错

    public class Demo04 {
       public static void main(String[] args) {
           max(22.3,44.44);
      }

       public static void max(double ...number) {
           if(number.length==0){
               System.out.println("out");
               return;
          }
           System.out.println(number[0]);
           System.out.println(number[1]);
           System.out.println(number[2]);
           System.out.println(number[3]);
           return;
      }
    }

     

    5、递归

    1、递归要有界限,不能无限调用,否则会内存崩掉,递归一定要有什么时候不调用自身 2、尽量不用递归 3、递归的层数尽量少一些,否则内存会溢出 4、Java是栈模式,最底层是main函数,如果调用函数楼房会越来越高,第一层,第二层...无限叠加,这样会使程序崩溃

    public class Demo05 {
       public static void main(String[] args) {
           System.out.println(f(5));//5!=5*4*3*2*1=120,用递归算阶乘
           /*
           1、递归要有界限,不能无限调用,否则会内存崩掉
           2、尽量不用递归
           3、递归的层数尽量少一些,否则内存会溢出
           4、java是栈模式,最底层是main函数,如果调用函数楼房会越来越高,第一层,第二层...无线叠加,这样会使程序崩溃
            */
      }
       public static int f(int i){//先求最小数,在逆推最大的数的值
           if(i==1){
               return 1;//递归一定要有什么时候不调用自身
          }else{
               return i*f(i-1);//5*f(4)->4*f(3)->3*f(2)->2*f(1)*->2*1,
               // 程序运行时,前面的方法在还在等待的,后面的方法得出结果,
               // 后面的结果解决上一层方法待解决问题
          }

      }
    }
  •  

posted on 2021-03-11 15:54  唐唐唐11  阅读(110)  评论(0)    收藏  举报