Java中的“函数”

1.前言

首先在java里面的“函数”叫做“方法”。其次java的方法与C语言里的函数大部分都是相似的,但是还是有区别,本篇文章就会提及两者的相同与不同,希望大家可以比较学习。

2.方法的定义和使用

2.1 方法的定义

方法的语法格式:
    // 方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
 [return 返回值];
 }

【注意事项】
1.修饰符:现阶段直接使用public static 固定搭配(这个算是一个新的内容暂时先记住就行,以后我们同样会学习)
2.返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
3.方法名字:采用小驼峰(也就是小写字母,但大写的也可以)命名
4.参数列表:如果方法没有参数()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
5.方法体:方法内部要执行的语句
6.在java当中,方法必须写在类当中
7.在java当中,方法不能嵌套定义
8.在java当中,没有方法声明(也就是函数声明)一说,因为在Java中,方法的声明和定义被合并在一起,以减少代码的复杂性和冗余。这样的设计使得Java代码更加易于阅读和理解,并且减少了错误和bug的发生。

2.2 方法的使用

java方法的使用与C语言的函数还是一样的,给方法传参按照自己的要求去调用就可以了,下面给出一个方法使用的例子:

public class AddTwoNumbers {
    
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static void main(String[] args) {
        int num1 = 5;
        int num2 = 10;
        int sum = add(num1, num2);
        System.out.println("The sum of " + num1 + " and " + num2 + " is: " + sum);
    }
}

3.方法的传参

3.1 传值or传址?

对于java方法的传参同样要注意的是是/“传值调用”/还是/“传址调用”
但是在java中并没有我们传址调用所需要的指针,它的传递规则是若是基本类型则是进行传值调用
若是引用类型就是传址调用,对于传值调用以及传址调用二者之间的区别我就不再赘述了(C语言都有讲解)

3.2 方法的使用举例(交换两数的值)

在C语言中我们要交换两个数的值必须传入二者的地址然后进行交换,但是在java中我们没有指针那么又该怎么解决呢?我们可以传引用类型的参数(例如数组),见代码如下:

 public class TestMethod {
    public static void main(String[] args) {
        int[] arr = {10, 20};
        swap(arr);
        System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    }
 
    public static void swap(int[] arr) {
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }
 }
 
// 运行结果
arr[0] = 20 arr[1] = 10

4.重点:方法重载

4.1 方法重载的定义

方法重载就是方法的方法名相同,但是方法的返回值类型以及参数类型不一致

4.2 方法重载的目的

方法重载其实就是解决了对方法功能相同但是参数不同的问题。比如我要执行一个加法的功能,但是如果在C语言中用函数实现整型的加法以及浮点型的加法,因为二者的参数列表不同,就要定义两个函数,并且这两个函数的名字还不相同,导致以后我们想实现执行,函数的时候还得先判断数据的类型,再写出对应的函数名,就会很麻烦

但如果有了方法的重载那么我就不需要改变方法的名字,只需要根据自己的需求改变一下返回值以及参数列表就行,我们在正式使用的时候自己传入参数,编译器就会自动根据你传入的数据类型判断调用的是哪一个方法。

4.3 方法能够重载的原因(方法签名)

方法重载的原理是Java编译器会根据方法的参数类型和数量生成不同的方法签名,这样就可以在同一个类中定义多个方法名相同但参数不同的方法。在调用方法时,编译器会根据实参的类型和数量,选择与之匹配的方法进行调用。
方法签名就是经过编译后方法真正的名字。

4.4 方法签名的使用举例

public class TestMethod {
 public static int add(int x, int y){
 return x + y;
 }
 public static double add(double x, double y){
 return x + y;
 }
 public static void main(String[] args) {
 add(1,2);
 add(1.5, 2.5);
 }
 }

注意:

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  3. 与返回值类型是否相同无关

5.递归

java中的递归与C语言中的递归并没有什么区别,底层逻辑都是一样的,就是我们所要解决的问题可以拆分为更小的类似的子问题;
下面我浅谈一下现在我对递归的理解,我认为现在递归有两种类型:
①可以写出递推公式的,比如求阶乘或者是斐波那契数列,这两个都可以写出递推公式。
②还有一类就是不能够用数学的递推公式直接体现的,比如逐位打印一个数,这个问题也是可以拆分成更小的问题,就是这类函数并没有返回值
一入递归深似海,我这只是最浅显的一点理解,仅仅是表示我现在的一点思考,希望能够给你一点启发。

6.总结

今天学习了java的方法也就是C语言的函数,二者最大的区别莫过于方法重载,希望大家都能掌握好这个新的概念。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值