首页 > 其他分享 >学习打卡05-方法以及方法重载

学习打卡05-方法以及方法重载

时间:2023-02-14 21:11:20浏览次数:39  
标签:调用 05 int void static 重载 打卡 方法 public

1,方法是什么

方法:就是一段具有独立功能的代码块,不调用就不执行

2,使用方法有什么好处

示例:有两个数组,如果都想遍历其中的每个元素,如果不使用方法就需要两个循环输出

不使用方法:

        int[] arr1 = {1, 2, 3, 4, 5, 6};
        int[] arr2 = {3, 11, 22, 3, 4, 56, 1, 2, 3, 4, 5, 6};
//        一遍
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i] + "\t");
        }
//        两遍
        System.out.println();
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i] + "\t");
        }

使用方法:很明显的提高了代码的复用性

        int[] arr1 = {1, 2, 3, 4, 5, 6};
        int[] arr2 = {3, 11, 22, 3, 4, 56, 1, 2, 3, 4, 5, 6};

        print(arr1);
        print(arr2);
    }

    public static void print(int[] arr1){
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i] + "\t");
        }
        System.out.println();
    }

通过以上的代码:可以简单的总结下 使用方法的好处

  1. 提高代码的复用性
  2. 方便团队协作,分工明确 —–》 比如上面的print方法 职员A写,职员B只需要调用就好

3,如何定义和调用方法

这里入门先按照下面的形式进行定义:

public static void 方法名(){
    方法体
}

修饰符  返回值类型  方法名(形参列表){
    方法体代码(需要执行的功能代码)
        return 返回值;
}

设计方法的时候应考虑:

  1. 方法是否需要接收数据处理
  2. 方法是否需要返回数据,并且返回数据的类型

注意事项:

  1. 如果方法不需要返回数据,返回值类型必须申明成void(无返回值声明), 此时方法内部不可以使用return返回数据。

  2. 方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了。

  3. 没有参数,且没有返回值类型(void)声明的方法,称为无参数、无返回值的方法,依次类推。

方法定义时几个注意点

image

  1. 方法的修饰符:暂时都使用public static 修饰。

  2. 方法声明了具体的返回值类型,内部必须使用return返回对应类型的数据。

  3. 形参列表可以有多个,甚至可以没有; 如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。

(1)方法在类中的位置放前放后无所谓,但一个方法不能定义在另一个方法里面。
(2)方法的返回值类型写void(无返回声明)时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
(3)return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。
(4)方法不调用就不会执行,  调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
(5)调用有返回值的方法,有3种方式:1、可以定义变量接收结果 2、或者直接输出调用,3、甚至直接调用;
(6)调用无返回值的方法,只有1种方式:1、只能直接调用。

// 注:(5)(6)实例如下:

//        1,直接调用 --- 》  适用于无返回值的数据
        print();
//        2,赋值调用
        int sum = sum(20, 32);
        System.out.println(sum);
//        3,输出调用
        System.out.println(sum(20, 11));
    }

    public static int sum(int num1, int num2) {
        int sum = num1 + num2;
        return sum;
    }

    public static void print() {
        for (int i = 0; i < 3; i++) {
            System.out.println("Hello World");
        }
    }

5,方法在计算机中的执行原理

方法被调用的时候,是进入到栈内存中运行的。

image

代码经过编译成为.class字节码文件,jvm虚拟机执行,限制性main方法,入栈,当需要处理到其他的方法时,其他的方法入栈。即:只有当对应方法处理的时候才可以入栈。运行完毕,有返回值返回,然后出栈。

6,补充知识,debug的使用

image

这里有四个控制代码的箭头:

第一个(Step Over):无条件向下走一行 ,有方法跳过方法

第二个(Step Into):有方法进入方法,但是是自己所编写的方法代码

第三个(Force Step Into):进入到方法内,不管是自己编写的,还是系统提供的方法都进入

第四个(Step Out):退出当前的方法

7,参数传递

1,基本类型的参数传递 ——> 值传递,

值传递:指的是在传输实参给方法的形参的时候,传输的是实参变量中存储的值的拷贝。

实参:在方法内部定义的变量。

形参:定义方法时“(…)”中所声明的参数

public class MethodDemo {
    public static void main(String[] args) {
        int a = 10;
        change(10); 
        System.out.print(a);   // 这个时候打印的还是10,不是100
    }
    
    public static void change(int c){
        a=100;
    }
}

因为是值的拷贝,所以是两个独立的变量在两个独立的作用域中:即一个main方法作用域,一个change方法作用域
2,引用类型的参数传递

前四天接触的引用类型只有 数组:所以这里用数组举例,在04-数组的介绍中说到,栈中是数组的引用,引用的是堆中变量的地址:即可以得出,数组的赋值只是把其引用的地址值赋予调用者。如下图:arr1和arr2指向同一个堆中的数据,所以如果有一个通过引用来修改堆中的数据的时候,再用另一个引用来获取数据的时候必然是修改过的数据;同过上面的代码作个展示

image

public class MethodDemo2 {
    public static void main(String[] args) {
        int[] arr = {10};
        change(arr); 
        System.out.print(arr[0]);   // 这个时候打印的还是100,因为另一个引用修改了共同引用的堆中的值
    }
    
    public static void change(int[] arr){
        arr[0] = 100;
    }
 }

基本类型和引用类型的参数在传递的时候有什么不同?

  • 都是值传递

  • 基本类型的参数传输存储的数据值

  • 引用类型的参数传输存储的地址值

8,方法的重载

一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载
和修饰符,返回类型无关;

形参列表不同:是指形参的个数,数据类型,顺序不同,和起什么名字无关

个数不同:

public static void sum(int num1,int num2,int num3){}

public static void sum(int num1){}

数据类型不同:

public static void max(int n1,double n2){}

public static void max(int n1,int n2){}
顺序不同:
//    这样重载的好处,根据不同的参数顺序可以使用不同的方法处理
    public static void add(int num1,double num2){
        
    }
    public static void add(double num2,int num1){
        
    }

9,return , break,continue的区别

return; 跳出并立即结束所在方法的执行。
break; 跳出并结束当前所在循环的执行。
continue; 结束当前所在循环的当次继续,进入下一次执行。

10,目标

  • 能够说出方法的作用
  • 能够按照业务需求定义出合适的方法格式
  • 能够说出方法调用的写法
  • 能够理解方法调用的内存图
  • 能够说出方法的参数传递是什么样的
  • 能够说出方法重载的概念,以及法重载的识别技巧
  • 能够说出在方法中单独使用return关键字的作用

标签:调用,05,int,void,static,重载,打卡,方法,public
From: https://www.cnblogs.com/yfs1024/p/17120906.html

相关文章

  • Java重写与重载
    Java方法重写Override与重载Overload介绍如果一个类多个相同名字但是参数个数不同,我们称之为重载Overload;如果一个类和它的父类方法名相同、参数相同、返回类型相同、但......
  • 3605、种花问题
    假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组 flowerbed表示花坛,由若干0和1......
  • 105、需要给产品和测试,科普的2个小知识点
    小知识1、“demo14626)--” 这种,都是 给用户展示的文案。程序之间的交互,  都是用 数字id,cas名等 唯一的编号。  展示文案和风格,是 灵活多变的 2、xx列表漏掉了1个......
  • 【C++复习】运算符重载中的特殊运算符
    无法被重载类属关系运算符 .成员指针运算符 .*作用域分辨符 ::三目运算符 ?:只能通过成员函数重载赋值运算符=方括号[]圆括号()指向结构体成员运算符->......
  • 05.深入理解JMM和Happens-Before
    大家好,我是王有志。关注​​王有志​​,一起聊技术,聊游戏,聊在外漂泊的生活。JMM都问啥?最近沉迷P5R,所以写作的进度很不理想,但不得不说​​高卷杏​​YYDS。话不多说,开始今天的......
  • 【C++复习】同名函数判断条件(重载,隐藏,覆盖)
    1、重载以下条件要全部满足:函数名相同以下条件满足其1:函数形参数目不同函数形参类型不同注意:不看返回值调用形式要不同//下面两个函数不能重载fun(inta,......
  • GitLab CICD Day 05 - 工作階段以及相依性
    stage编排stages:-testing#stage编排-build-deployrun_test:#Jobstage:testingtags:-shell......
  • Mybatis05 - 将有固定格式的文件添加至IDEA模板
    将常用的固定格式的配置文件添加为IDEA中的模板Mybatis核心配置文件mybatis-config.xmlMybatis映射文件mybatis-mapper.xml可以在新建文件时直接使用添加的模板红......
  • 重载下标运算符
    重载下标运算符如果对象中有数组,重载下标运算符[],操作对象中的数组将像操作普通数组一样方便。下标运算符必须以成员函数的形式进行重载。下标运算符重载函数的语法:返......
  • 05 ORM数据库操作
    ORM数据库操作django使用mysqldjango默认使用的是自带的sqlite数据库,如果想使用其他数据库,需要在settings配置文件中配置DATABASES={'default':{'ENGI......