• Java的方法


    作者:~小明学编程

    文章专栏:JavaSE基础

    目之所及皆为回忆,心之所想皆为过往

    目录

    方法的概念以及使用

    什么是方法

    方法的定义

    方法调用的执行过程

    实参和形参的关系

    没有返回值的方法

    方法重载

    为什么需要方法重载

    方法重载概念

    方法签名


    方法的概念以及使用

    什么是方法

    在Java中方法就类似于C中的函数其存在的意义在于

    1. 是能够模块化的组织代码(当代码规模比较复杂的时候).


    2. 做到代码被重复使用, 一份代码可以在多个位置使用.


    3. 让代码更好理解更简单.


    4. 直接调用现有方法开发, 不必重复造轮子

    方法的定义

    方法定义的语法格式

    1. // 方法定义
    2. 修饰符 返回值类型 方法名称([参数类型 形参 ...]){
    3. 方法体代码;
    4. [return 返回值];
    5. }

    除了前面的修饰符以外其余的命名与C都是一致的至于修饰符的话暂且不讲等后面的文章再详细给大家介绍(主要是本人现在也不会)。
     

    这里给大家举两个例子,一个是求两个数的最大值,还有一个是求三个数中的最大值。

    1. public static int max3(int a,int b,int c){
    2. return max2(a,b) > c ? max2(a,b) : c;
    3. }
    4. public static int max2(int a,int b){
    5. return a > b ? a : b;
    6. }
    7. public static void main(String[] args) {
    8. int a = 4,b = 12,c = 15;
    9. System.out.println(max2(a,b));
    10. System.out.println(max3(a,b,c));
    11. }

    【注意事项】
    1. 修饰符:现阶段直接使用public static 固定搭配
    2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
    3. 方法名字:采用小驼峰命名(在Java中一般类的名字采用大驼峰写法也就是每个单词的首字母都是大写,方法和变量的名字采用小驼峰写法也就是首单词的首字母小写其余单词的首字母都是大写)。
    4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
    5. 方法体:方法内部要执行的语句
    6. 在java当中,方法必须写在类当中
    7. 在java当中,方法不能嵌套定义
    8. 在java当中,没有方法声明一说

    方法调用的执行过程

    调用过程:

    调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下执行

    【注意事项】
    1.定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行。
    2.一个方法可以被多次调用。
     

    实参和形参的关系

    Java中方法的形参就相当于sum函数中的自变量n,用来接收sum函数在调用时传递的值的。形参的名字可以随意取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值(在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体)。

    Java中的对与基本类型的传参与C语言大同小异。

    1. public class TestMethod {
    2. public static void main(String[] args) {
    3. int a = 10;
    4. int b = 20;
    5. swap(a, b);
    6. System.out.println("main: a = " + a + " b = " + b);
    7. }
    8. public static void swap(int x, int y) {
    9. int tmp = x;
    10. x = y;
    11. y = tmp;
    12. System.out.println("swap: x = " + x + " y = " + y);
    13. }
    14. }

    实参a和b是main方法中的两个变量,其空间在main方法的栈(一块特殊的内存空间)中,而形参x和y是swap方法中的两个变量,x和y的空间在swap方法运行时的栈中,因此:实参a和b 与 形参x和y是两个没有任何关联性的变量,在swap方法调用时,只是将实参a和b中的值拷贝了一份传递给了形参x和y,因此对形参x和y操作不会对实参a和b产生任何影响。
     

    没有返回值的方法

    当我们的方法不用返回值的时候我们和C一样我们的返回值直接写成void就行了。

    方法重载

    为什么需要方法重载

    当我们想要实现两个数的相加的时候我们需要写一个add方法

    1. public static int add(int x,int y){
    2. return x + y;
    3. }
    4. public static void main(String[] args) {
    5. int a = 10;
    6. int b = 20;
    7. int c = add(a,b);
    8. System.out.println(c);
    9. }

    这里我们给的是整数的相加,当我们想要实现两个浮点数的相加的时候我们该怎么办呢?

    这里提示我们有错误因为我们的方法所要接受的类型是int类型的这里传入一个浮点数显然是不行的,难道我们还得重写一个方法add_double()吗那这样的话,我们对于不同类型的数据需要用不同的方法,这样的话就会非常的麻烦。

    这时候就需要我们对于方法的重载 

    方法重载概念

    在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。

    说白了,方法重载的意思就是一词多义,就是用同一个方法名我们可以实现对不同类型乃至多组数据实现同一个功能。

    注意:
    1. 方法名必须相同


    2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)


    3. 与返回值类型是否相同无关
     

    1. public static int add(int x,int y){
    2. return x + y;
    3. }
    4. public static int add(int x,int y,int z){
    5. return x + y + z;
    6. }
    7. public static int add(int x,double y){
    8. return x + (int)y;
    9. }
    10. public static double add(double x,double y){
    11. return x + y;
    12. }
    13. public static void main(String[] args) {
    14. int a = 10;
    15. int b = 20;
    16. int c = add(1,2,3);
    17. int d = add(1,2);
    18. double e = add(1.2,3.4);
    19. System.out.println(c);
    20. System.out.println(d);
    21. System.out.println(e);
    22. }

    方法重载的首要条件就是方法名要一样然后就是参数的个数、参数的类型、类型的次序必须得有一个是不同的,否则直接报错,值得我们注意的是方法的返回值与方法的重载没有关系也就是说我们的方法名以及后面的参数部分都一样但是方法的返回值不一样这不属于方法的重载,这种情况下直接报错。

    方法签名

    在同一个作用域中不能定义两个相同名称的标识符。比如:方法中不能定义两个名字一样的变量,那为什么类中就可以定义方法名相同的方法呢?
    方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。

    特殊字符数据类型
    Vvoid
    Zboolean
    Bbyte
    Cchar
    Sshort
    Iint
    Jlong
    Ffloat
    Ddouble
    [数组(以[开头,配合其他的特殊字符,表述对应数据类型的数组,几个[表述几维数组)
    L引用类型,以L开头,以;结尾,中间是引用类型的全类名

  • 相关阅读:
    Microsoft Edge浏览器不兼容解决办法
    C和指针 第11章 动态内存分配 11.2 malloc和free
    Unity用爬虫做一个火车购票系统
    Java基础之类加载器
    Chapter 11 EM算法
    Java基础错题集(七)
    【目标检测】39、一文看懂计算机视觉中的数据增强
    【数据结构与算法系列5】螺旋矩阵II (C++ & Python)
    cuda安装失败原因汇总
    AI绘画-Stable Diffusion三次元人物模型训练(炼丹)教程,你也可以定制你的三上youya老师!
  • 原文地址:https://blog.csdn.net/m0_56911284/article/details/126402464