Day06

作者: 拼搏男孩 | 来源:发表于2019-11-26 16:31 被阅读0次

    一. 函数(方法)

    1. 定义
      • java中的运行代码除极个别情况外,必须写在方法中, 方法就是代码的载体
      • 我们平时写代码的main方法也是一个方法,只是比较特殊而已, 可以被jvm识别
      • 因为要适应不同的需求, 我们的方法也是千变万化的. 一个main方法显然是无法达到我们的要求的
      • 当我们用代码定义了一个功能, 想要将功能保存下来沿用,就必须要以方法为载体
      • 方法的出现提升了代码的复用性
    1. 格式

      权限修饰符 静态/非静态 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
       //方法体语句;
       return 返回值; 
      }
      
    2. 格式详解

      • 修饰符 : 设定方法的作用范围, 现阶段只要用public就可以了
      • 静态/非静态 : static关键字表示静态 , 出现static , 这个方法就是静态方法,没有就是非静态
      • 返回值类型 : 就是代码运行的结果的数据类型
      • 方法名 : 这个方法的名称, 调用的时候我们使用的就是方法名
      • 参数 :
        • 实际参数 : 就是实际参加运算的值 , 基本数据类型就是值, 引用数据类型是地址值
        • 形式参数 : 定在在方法上, 用来表示接收的数据的类型
      • 参数名 : 就是变量名
      • 方法体语句 : 方法中的功能代码, 也是我们实际运行的代码
      • return : 关键字, 表示结束方法, 同时可以返回一个值
      • 返回值 : 就是功能的运行的结果, 由return带给调用者
    3. 演示

      public static void main(String[] args) {
       //调用计算两个数乘积的方法
       int c = multipy(14, 15);
       System.out.println(c);
      }
      //定义方法,计算两个数的乘积
      public static int multipy(int a, int b){
       int count = a * b;
       
       return count;
      }
      
    4. 测试题

      • 定义方法,根据数字打印对应行数等腰三角形

    二. 方法的分类和调用

    1. 方法的分类

      • 有参方法
      • 无参方法
      • 有返回值
      • 无返回值
      //无参无返回值的方法
      public static void method1(){
       System.out.println("我就是自娱自乐");
      }    
      //有参无返回值的方法
      public static void method2(int a){
       //计算a平方 
       System.out.println(a*a);
      }    
      //无参有返回值的方法
      public static long method3(){
       //获取当前时间
       long time = System.currentTimeMillis();
       return time;
      }
      //有参有返回值
      public static int method4(int a,int b){
       //返回a,b中数值较大的那个
       return a>b?a:b;
      }
      
    2. 调用方式

      • 单独调用 方法独立于其他代码, 独立执行功能
        • 多用检测维护型的方法
      • 输出调用 只做结果输出, 这种调用对我们来说没有任何意义
      • 赋值调用 有返回值结果, 可以进一步操作返回值
      public static void main(String[] args) {
       //赋值调用
       int c = multipy(14, 15);
       System.out.println(c);
       
       //输出调用
       print();
       
       //单独调用
       clear();
      }
      //定义方法,计算两个数的乘积
      public static int multipy(int a, int b){
       int count = a * b;
       
       return count;
       
      }
      
      //打印语句功能
      public static void print(){
       System.out.println("哇,有美女....");
      }
      
      //清理系统垃圾功能
      public static void clear(){
       for (int i = 0; i < 1000; i++) {
           System.out.println("系统清理中....");
       }
      }
      
    3. 测试题

      • 定义一个获取整数绝对值的方法, 并调用
      • 定义一个计算一定范围内整数和的方法, 并调用
    4. 参数传递

      • 调用方法时,传递一个实参,就相当于将这个实参赋值给形参

    三. 方法的重载(overloading)

    1. 定义

      • 一个类里面出现多个方法名相同 , 参数列表不同的多个方法 , 我们叫这种现象为方法重载
      • 方法重载是为了提高方法名的使用率 , 毕竟意思相同的单词就那么几个 , 而且 我们的方法功能也类似 , 这种情况下如果使用不用的方法名 , 很可能造成意义混 乱 , 所以就出现了方法重载
      • 在我们的程序中绝对不允许出现两个一模一样的方法, 如果我们能想办法让jvm区别每个方法,那么这个方法就可以使用
    2. 参数列表

      • 参数个数不同
      • 参数类型不同
      • 参数的顺序不同(也算是重载,但是一般开发中不用, 没有意义)
    3. 案例演示

      public static void method(int i,double d){
       
       
      }
      //和第一个方法的参数个数不同
      public static void method(int i){
          
      }
      
      //和第一个方法的参数的类型不同
      public static void method(String str,float f){
      
      }
      
      //和第一个方法的参数的顺序不同
      public static void method(double d,int i){
      
           
      }
      
    1. 测试题

      • 定义两个重载方法, 一个方法是计算两个的和, 一个方法是计算三个整数的和
      • 定义两个重载方法, 比较两个int型和double型是否相等

    四. 方法间相互调用的内存图

    1. 栈的定义
      • 运行方法和存储局部变量
      • 栈是一个一端开口的筒子,类似于羽毛球筒
    2. 执行流程
      • 当jvm执行某个方法时,会将这个方法放入到栈中执行,当这个方法中又调用了其他方式时,jvm就会将新的方法也放入栈中已有的方法的上面执行,当方法执行完毕后,方法就会被jvm从栈中移除,我们称之为弹栈

    五. 可变参数

    1. 定义

      • 在方法声明上使用...表示多个相同类型的参数
    2. 注意事项

      • 在实际调用中,我们已经在方法内传入多个实参, 虚拟机会自动帮我们填充到可变参数上,形成一个数组
    3. 示例

      public void method(String... strs){
           for (int i = 0; i < strs.length; i++) {
               System.out.println(strs[i]);
           }
      }
      public static void main(String[] args) {
           
           Class class1 = new Class();
           class1.method("小明","小红","小时");
           
      }
      

    总结:

    1. 方法
      • 将一段代码圈起来,便于重复使用(提高代码的复用性)
      • 方法名 : 别的方法要调用当前方法,需要方法名
      • 参数列表:当前方法运行的原材料
      • 返回值类型: 检测或者是规定当前返回出去的结果的类型
    2. 方法的分类和调用
      • 有参有返回值
      • 有参无返回值
      • 无参有返回值
      • 无参无返回值
      • 赋值调用
      • 单独调用
      • 输出调用
    3. 方法的重载
      • 类中出现了方法名相同,参数列表不同的方法,这种现象我们称之为重载
      • 参数列表不同的表现:
        • 类型不同
        • 长度不同
        • 顺序不同(无意义)
    4. 方法间调用的内存原理
      • 虚拟机开启,只会执行main方法, 其他的方法都必须由main方法调用才能引出来
      • 栈 : 一端开口, 方法的运行区域
        • 栈只会执行最顶端的方法
        • 压栈, 弹栈
    5. 可变参数
      • ...
      • 优点 : 既可以接收数组, 也可以接收散装数据
      • 缺点 : 必须是参数列表的最后一个参数

    作业

    1. 第一题
      • 定义计算从1到某个数以内所有奇数的和
    2. 第二题
      • 定义方法计算1到某个数以内能被7整除但不是偶数的数的个数
    3. 第三题
      • 定义方法计算从1到某个数以内所有能被3或者17整除的数的和。
    4. 第四题
      • 从键盘输入一个数n,定义方法判断是不是一个质数(质数是只能被1和它自身整除的数)
    5. 扩展提
      • 求2〜某个数之内的质数

    相关文章

      网友评论

          本文标题:Day06

          本文链接:https://www.haomeiwen.com/subject/tfhywctx.html