java入门10--方法

Posted acrifhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java入门10--方法相关的知识,希望对你有一定的参考价值。

java入门10

方法

加法方法示例:

package method;

public class Demo01 
    //main方法
    public static void main(String[] args) 
         int sum = add(1,2);
         System.out.println(sum);
    
    //加法方法
    public static int add(int a,int b)
        return a+b;
    
//输出3
  • 方法在程序中被创建,在其他地方被引用
  • 设计方法原则:一个方法实现一个功能

java方法类似于其他语言的函数,是一段用来完成特别功能的代码片段,一般定义一个方法包含以下语法:

  • 方法包含一个方法头和一个方法体。
  • 修饰符:可选的,告诉编译器如何调用该方法。定义了方法的访问类型
  • 返回值类型:方法可能会有返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。
  • 方法名:方法名和参数表共同构成方法签名
  • 参数类型:参数是一个占位符。当方法被调用,传递值给参数,这个值称为实参或变量。参数列表是指方法的数据类型、顺序、参数个数。参数是可选的
  • 方法体:定义该方法的功能

方法调用:

  • 调用方法:对象名.方法名(实参列表)
  • java支持两种调用方法的方式,根据方法是否返回值来选择
  • 当方法返回一个值时,方法调用通常被当作一个值:
int larger = max(1,2);
  • 如果方法返回值是void,方法调用一定是一条语句
System.out.println("Hello,world!");

java的值传递和引用传递:百度

方法定义与调用示例:

package method;

public class Demo02 
    public static void main(String[] args) 
        int x = max(3,5);
        System.out.println(x);
    

    //比大小
    public static int max(int a,int b)
        int result=0;

        if (a==b)
            System.out.println("a==b");
        
        if (a>b)
            result=a;
        else 
            result=b;
        return result;
    

方法的重载

  • 重载就是在一个类中,有相同的函数名称,但形参不同的函数

  • 方法重载的规则:

    • 方法名必须相同
    • 参数列表必须不同(个数不同,类型不同,或排序不同)
    • 方法的返回类型可以相同也可以不相同
    • 仅仅返回类型不同不足以成为方法的重载
  • 方法名相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应方法,若匹配失败,则报错

命令行传参

  • 有时候你希望运行一个程序时再传递给它消息。这时候需要传递命令行参数给main()函数实现

比如如下代码:

package method;

public class Demo03 
    public static void main(String[] args) 
        //args.Length 数组长度
        for (int i = 0; i < args.length; i++) 
            System.out.println("args["+i+"]:"+args[i]);
        
    

我们文件夹打开Demo03,再在cmd中打开,编译,输入参数

注意运行时要退到src目录下

可变参数

  • JDK1.5开始,java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明

比如我们想找出一堆数字里的最大值,需要经常变动需要排列的数字个数:(此处提前用了数组)

package method;

public class Demo04 
    public static void main(String[] args) 
        Demo04 demo04 = new Demo04();
        demo04.printMax(34,77,2,90,3,45);

    

    public static void printMax(double...numbers)
        if (numbers.length == 0)
            System.out.println("No argument passed");
            return;
        
        double result = numbers[0];

        //排序
        for (int i = 1; i < numbers.length; i++) 
            if (numbers[i] > result)
                result = numbers[i];
            
        
        System.out.println("The max value is "+result);
    
输出:The max value is 90.0

递归

  • A方法调用A方法,就是函数自己调用自己
  • 递归可以大大减少代码量
  • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环
  • 递归体:什么时候需要调用自身方法

先来看一个错误的递归:

package method;

public class Demo05 
    public static void main(String[] args) 
        Demo05 test = new Demo05();
        test.test();
    
    public void test()
        test();
    

造成了内存不够,栈溢出的可怕错误:

先来一个递归在阶乘中的应用

package method;

public class Demo06 
    public static void main(String[] args) 
        //阶乘
        System.out.println(f(5));
    
    public static int f(int n)
        if (n==1)
            return 1;
        else 
            return n*f(n-1);
        
    
//120

当然,大型计算不要用递归,不然内存迟早报废

以上是关于java入门10--方法的主要内容,如果未能解决你的问题,请参考以下文章

java入门10--方法

SpringBatch从入门到精通-3-并行处理

java面向对象入门-java构造方法

java中,静态变量存储在哪个区啊,堆还是栈啊,或者说其他地方,谢谢

Java入门系列this关键字

怎样使用 svelte/store 中的 readable