JAVA基础语法之方法


JAVA基础语法——方法
本文参考内容: 牛客网,此内容仅为本人的学习知识总结。

方法

2.1 方法
概念:也可以叫函数。可以独立完成任务的代码块。可以提高变成的效率,也可以提高程序的可读性,便于后期的维护。
知识点:
语法:修饰符 返回值类型 方法名(参数列表){方法体}
调用:方法名(参数列表)
注意:若没有返回值,则声明类型用void

实列:

package nowcoder2.part02;

/*方法*/

public class MethodDemo1 {
    public static void main(String[] args) {
        sayHello();
        printName("perth");
        int randomNum = randomInt();
        System.out.println("My lucky number is " + randomNum + " .");
        long p = power(2,10);
        System.out.println("2^10="+p);

    }

    //1.
    public static void sayHello(){
        System.out.println("Hello!");
    }

    //2.
    public static void printName(String name){
        System.out.println("My name is "+name+" .");
    }

    //3.
    public static int randomInt(){
        return (int) (Math.random() * 100);
    }

    //4.
    public static long power(int x,int y){
        return (long) Math.pow(x,y);
    }


  }

运行结果:
在这里插入图片描述
也可以将以上所有的几个方法写成一个方法调用:

package nowcoder2.part02;

/*方法*/

public class MethodDemo1 {
    public static void main(String[] args) {
//        sayHello();
//        printName("perth");
//        int randomNum = randomInt();
//        System.out.println("My lucky number is " + randomNum + " .");
//        long p = power(2,10);
//        System.out.println("2^10="+p);

        introduce("perth");
    }

    //1.
    public static void sayHello(){
        System.out.println("Hello!");
    }

    //2.
    public static void printName(String name){
        System.out.println("My name is "+name+" .");
    }

    //3.
    public static int randomInt(){
        return (int) (Math.random() * 100);
    }

    //4.
    public static long power(int x,int y){
        return (long) Math.pow(x,y);
    }

    //5.
    public static void introduce(String name){
        if (name == null || name.equals(" ")){
            return;
        }
        sayHello();
        printName(name);
        System.out.println("My lucky number is " + randomInt() + ".");
    }
  }


运行结果:
在这里插入图片描述

方法参数

2.2 方法参数
通过一个例子说明:
发现调换两个整数类型的数失败,但调换数组里的元素成功
注:内存中分配空间 引用类型与基本类型的区别

package nowcoder2.part02;

import java.util.Arrays;

/*
* 方法参数
* */
public class MethodDemo2 {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        changeNum(a,b);
        System.out.println("a="+a+"" +" ,b="+b);
    }

    //交换两个数
    public static void changeNum(int m ,int n){
        int t = m;
        m = n;
        n = t;
        System.out.println("m="+m+" ,n="+n);
    }

}

在这里插入图片描述
此处可以看见a,b并未交换成功。

package nowcoder2.part02;

import java.util.Arrays;

/*
* 方法参数
* */
public class MethodDemo2 {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        changeArr(array);
        System.out.println("array= " + Arrays.toString(array));
    }

    //交换数组中的两个元素
    public static void changeArr(int[] arr){
        if (arr==null||arr.length<2){
            return;
        }
        int x = arr[0];
        arr[0]=arr[arr.length-1];
        arr[arr.length-1] = x;
    }
}

在这里插入图片描述
此处可以发现数组的前后两个元素成功交换;

原理:
在这里插入图片描述
在这里插入图片描述

可变参数

2.3 可变参数
概念:在定义方法时,声明的数量不确定的参数。 本质是一个数组
声明:修饰符 返回值类型 方法名(类型 参数1,类型…参数N)(最后一个即为可变参数)
注意:只能有一个且访参数列表末尾。
实列:

package nowcoder2.part02;
/*
* 可变参数
* */
public class MethodDemo3 {
    public static void main(String[] args) {
        System.out.println(sum());
        System.out.println(sum(1));
        System.out.println(sum(1,2));
        System.out.println(sum(1,2,3));
        System.out.println(sum(new int[]{1,2,3,4,5}));
    }
    //求和
    public static int sum(int...nums){
        int s=0;
        for (int num : nums){
            s+=num;
        }
        return  s;
    }
}

运行结果:
在这里插入图片描述

方法重载

2.4 方法重载
概念:在一个类中,定义多个名称相同,参数列表不同的方法,叫做方法重载;
查看:Ctrl+N->输入->structure->a-z
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开后发现代码繁多,可以通过首字母提示查看,
在这里插入图片描述
实列:

package nowcoder2.part02;
/*
* 方法重载
* */
public class MethodDemo4 {
    public static void main(String[] args) {
        System.out.println(sum(1,2,3,4));
        System.out.println(sum(5.0,6.7,9.3));
        System.out.println(sum(5,6,9.3));
    }

    //求和:同意方法名,但参数类型不同
    //int
    public static int sum(int...nums){
        System.out.println("sum for int");
        int s=0;
        for (int num:nums){
            s=+num;
        }
        return s;
    }
    //double
    public  static double sum(double...nums){
        System.out.println("sum for double");
        double s=0;
        for (double num:nums){
            s+=num;
        }
        return s;
    }
}

在这里插入图片描述

方法递归

2.5 方法递归
概念:一个方法调用它本身,被称为方法递归; 递归是一种隐式的循环,他会重复执行某段代码,却无序循环控制。
作用:为某些编程问题提供了最简单的解决方案
注意:一些递归算法会快速消耗大量的CPU及内存资源,慎用慎用!!!
实列1:

package nowcoder2.part02;
/*
* 方法递归
* */
public class MethodDemo5 {
    public static void main(String[] args) {
        System.out.println(factorial(5));
    }

    //阶乘  n!=n*(n-1)!
    public static long factorial(int n){
        if (n==1){
            return 1;
        }
        System.out.println(n);
        return n * factorial(n-1);
    }
}

运行结果:
在这里插入图片描述

实列2:

package nowcoder2.part02;
/*
* 方法递归
* */
public class MethodDemo5 {
    public static void main(String[] args) {
        System.out.println(fibonaci(5));
    }
    //斐波那切数列
    //1,1,2,3,5,8,13,21,34,...
    //f(1)=1,f(2)=1,f(x)=f(x-1)+f(x-2)
    public  static long fibonaci(int n){
        if (n==1||n==2){
            return 1;
        }
        return fibonaci(n-1) + fibonaci(n-2);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值