Java中方法的学习

2023-10-27

目录

Java中的方法定义:

设计方法的原则

方法的命名规则

代码实现

方法调用

方法的重载


方法学习不知死过多少次,还让我学是吧!!!你没完了哈!!!!

来~来~来~,咱们一起来分析!!!

老师

  • 前面的关键字我讲过吧~~
  • 数据类型还用说嘛~~~
  • 方法的定义格式我说过吧~~
  • 上面都会的话直接定义一个方法这个很难吗?

···························

学生

  • 你学了多久了?
  • 讲这些内容你一共才花了多长时间啊?
  • 我们是否真正理解会用了,还是只是知道有这么回事儿啊?
  • 你前面的东西学了不忘啊?

说什么学习学习在学习,努力努力在努力。你不通俗的说,我永远都不是那块料!!!

通俗说方法

方法是抽象的,是一件事儿从开始到完成的一个实现过程。包含实现这件事儿用到的数据元素、实现规则、实现逻辑、结果反馈等。

Java中的方法定义:

Java方法是语句的集合,他们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

设计方法的原则

方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法时,最好保持方法的原子性,即一个方法完成一个功能,利于后期拓展

方法的命名规则

  • 小驼峰命名法(见名知意)
  • 修饰符   返回值类型   方法名(参数类型  参数名){

                      方法体;

                     return  返回值;

}

代码实现

需求:写一个比大小的方法

/*
权限修饰符暂且认识public这一种,后期文章会跟大家分享。
static修饰符在没学面向对象时,先用类直接调用的方式测试方法的使用
比大小至少要两个数,故方法中至少放入两个参数
比较完我们要返回一个最大的结果,故返回值根据最大结果的数据类型来定义
*/
public static int getMax(int a,intb){
    int max=0;//避免比较赋值时出现损失精度或者数据类型强转,设置接收参数类型一致

    if(a==b){
        System.out.println("a==b");
        return 0;//终止方法
    }
    if(a>b){
        max=a;
    }else{
        max=b;
    }
    return max;//max为int类型
}

方法调用

有static关键字(静态方法)

调用方法:类名.方法名(实参列表)

Java支持两种调用方法的方式,根据方法是否返回值来选择

  • 当方法返回一个值的时候,方法调用通常被当作一个值。
int larger=max(20,30);
  • 当方法返回值为void,方法调用一定是一条语句
System.out.println("这是一个调用println方法的语句");

 

无static修饰的方法(非静态方法)

调用方法:先使用new关键字创建对象,通过对象名调用方法

public class StudentDemo{

    public static void main(String[] args){

        Student st=new Student();

        //静态方法调用示例
        Student.sayHello1();//Hello,我是静态方法

        //非静态方法调用示例
        st.sayHello2();//Hello,我是非静态方法

    }


}

class Student{

    public static void sayHello1(){

        System.out.println("Hello,我是静态方法");

    }


    public void sayHello2(){

        System.out.println("Hello,我是非静态方法");

    }

}
public class Demo{
    public static void main(String[] args){




    }

    public void a(){

        b();
    }

    //非静态方法是类实例化以后才存在
    public void b(){

    }

    //含static关键字的方法是随着类的加载而加载
    public static void c(){

        b();//报错:原因b方法需实例化以后才能调用,时间上有错误
    }

}

值传递和引用传递

/**
值传递演示:
    只是将实参带入,方法中并未有返回值,因此a的值并未发生变化

*/

public class Demo{
    public static void main(String[] args){
        int a = 1;
        System.out.println(a);//a=1

        Demo.change(a);
        System.out.println(a); //a=1
    }

    public static void change(int a){
        a = 10;

    }

}
/**
引用传递:
    对象,本质还是值传递
*/
public class Demo{
    public static void main(String[] args){
        Person person = new Person();//实例化Person
        System.out.println(person.name);// null

        Demo.change(person);
        System.out.println(person.name);// 段海涛

    }

    public static void change(Person person){
        //person是一个对象:指向实例化后的人,可以改变属性
        person.name = "段海涛";
    }
}

class Person{

    String name;
}

方法的重载

在一个类中,有相同的函数名称,但形参不同的函数

重载的规则:

  • 方法名称必须相同
  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等);
  • 方法的返回值类型可以相同,也可以不同;
  • 仅仅返回值类型不同不足以成为方法的重载;
public class MethodDemo{
    public static void main(String[] args) {
        int max=getMax(3,7,4);
        System.out.println(max);
    }
    public static int getMax(int a,int b){
        int max=0;
        if(a==b){
            max=0;
            return max;
        }
        if(a>b){
            max=a;
        }else{
            max=b;
        }
        return max;
    }
    public static double getMax(double a,int b){
        double max=0;
        if(a==b){
            max=0;
            return max;
        }
        if(a>b){
            max=a;
        }else{
            max=b;
        }
        return max;
    }
    public static double getMax(int a,double b){
        double max=0;
        if(a==b){
            max=0;
            return max;
        }
        if(a>b){
            max=a;
        }else{
            max=b;
        }
        return max;
    }
    public static int getMax(int a,int b,int c){
        int max=0;
        if(a==b&&b==c){
            max=0;
            return max;
        }
       if(a>b){
           if(a>c){
               max=a;
           }else{
               max=c;
           }
       }else{
           if(b>c){
               max=b;
           }else{
               max=c;
           }
       }
        return max;
    }
}

实现理论:

方法名称相同是,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

命令行传参(拓展)

可变参数

  • jdk 1.5开始,java支持传递同类型的可变参数给一个方法;
  • 在方法生命中,在指定参数类型后加一个省略号(···)。
  • 一个方法中只能指定一个可变参数,它必须hi方法的最后一个参数,任何普通的参数必须在它之前声明
public static void printMax(double... numbers){
    if(numbers.length==0){
        System.out.println("No argument passed");
        return;
}
    double result = numbers[0];
    //排序
    for(int i=1;i<numbers.length;i++){
        if(numbers[i]>result){
            result = numbers[i];
        }

    }
    System.out.println("The max value is"+result);

}

递归

  • 先了解A方法调用B方法
  • 递归就是A方法调用A方法,即自己调用自己。(报错会导致栈溢出)
  • 利用递归可以用简单的程序来解决一些复杂的问题。通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归的结构包括两个部分

递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。(栈溢出)

递归体:什么时候需要调用自身方法。

需求:求5的阶乘

/**
5的阶乘:5*4*3*2*1
*/

public static void f(int i){
   
    if(i==1){
       return 1;
    }else{
        return i*f(i-1)

    }
}

你掌握了吗?学习更多请点我要学更多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中方法的学习 的相关文章

随机推荐

  • Unity之2D摄像机跟随

    Unity之2D摄像机跟随 在2D游戏制作过程中 摄像机的跟随主角移动是必不可少的 有代码实现 也有插件实现 下面分别讲述两种方法 Unity中提供了专属的摄像机插件进行使用 官方Cinemachine插件 后面有相关组件介绍 首先从uni
  • STUN, TURN, ICE介绍

    转自 https blog csdn net byxdaz article details 52786600 utm source blogxgwz4 STUN STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址 从而替代位于
  • SpringBoot3集成RocketMq

    标签 RocketMq5 Dashboard 一 简介 RocketMQ因其架构简单 业务功能丰富 具备极强可扩展性等特点被广泛应用 比如金融业务 互联网 大数据 物联网等领域的业务场景 二 环境部署 1 编译打包 1 下载5 0版本源码包
  • tidefinger(指纹识别)

    1 工具介绍 TideFinger 一个开源的指纹识别小工具 使用了传统和现代检测技术相结合的指纹检测方法 让指纹检测更快捷 准确 是由tide安全团队设计而来 下载地址 https github com TideSec TideFinge
  • Debain 系统U盘安装完全图解

    习惯了使用图形界面的操作 总有一股想要切换到文字界面的Linux的冲动 刚好趁家里的老台式机 没什么用了 就打算用来玩下Linux 在一路安装与使用的过程中 碰到了许多的问题 顺便记录下来 以希望可以帮到需要的人 一 准备工作 160 16
  • muduo日志3

    日志滚动 日志滚动条件 1 文件大小 例如每写满1G换下一个文件 2 时间 每天零点新建一个日志文件 不论前一个文件是否写满 一个典型的日志文件名 logfile test 20130411 115604 popo 7743 log Log
  • 第一天学java

    1 java是什么 java是一门面向对象的编程语言 java是一门准动态编程语言 2编写java的过程 编写 编译 运行 编译会产生class 文件 3配置java运行环境 1安装jdk gt gt 我的是 E environment j
  • DOCKER 相关笔记

    Docker 镜像使用的 rootfs 往往由多个 层 layes 组成 而在使用镜像时 Docker 会把这些增量联合挂载在一个统一的挂载点上 等价于前面例子里的 C 目录 这个挂载点为 var lib docker aufs mnt x
  • SpringBoot工作原理

    SpringBoot工作原理 Spring Boot是由Pivotal团队提供的全新框架 其设计目的是用来简化新Spring应用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 从而使开发人员不再需要定义样板化的配置 通过这种方式
  • (四)JSP语法详细介绍--脚本元素

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 通过scriptlet可以在jsp中嵌入java代码 可以定义全局变量 方法 类 可以定义局部变量 方法 类 输出一个变量或具体内容 等同于 也可以用以下XML语句代替
  • java中枚举类将属性传值前台(枚举类前台接收问题)

    最近做的这个项目中 用到了大量的枚举类 今天来记录一下我遇到的问题 如果能帮到大家就更好了 1 枚举类如何转为json 在一个类的属性中 这个枚举类属性如何直接使用在接收参数和向数据库传递参数时需要自动转化 这里需要用到两个注解 JSONT
  • linux学习笔记(1)--基础介绍

    目录 linux的初步介绍 1 linux的特点 2 初步介绍 2 1谁挺linux 2 2 linux的历史 linux的初步介绍 1 linux的特点 1 免费的 开源 2 支持多线程 多用户 3 安全性好 4 对内存和文件管理优越 5
  • scala学习-scala中:: , +:, :+, :::, +++的区别

    4种操作符的区别和联系 该方法被称为cons 意为构造 向队列的头部追加数据 创造新的列表 用法为 x list 其中x为加入到头部的元素 无论x是列表与否 它都只将成为新生成列表的第一个元素 也就是说新生成的列表长度为list的长度 1
  • Java Stream API

    之前写过函数表达式介绍过stream的创建和一些基本使用方法 但是后来发现除了简单map filter distinct等API方法 实际上这些可以API组合在一起使用 有时候会有特别的思路 比如最近看的一个写法 for int i 0 i
  • 使用 TensorFlow 和 Flask 部署 Keras 图像分类卷积神经网络模型

    通常需要抽象出您的机器学习模型细节 然后将其与易于使用的 API 端点部署或集成 例如 我们可以提供一个 URL 端点 任何人都可以使用它来发出 POST 请求 他们将获得模型推断的 JSON 响应 而不必担心其技术问题 在本教程中 我们将
  • kafka消费者模式

    一 单线程消费者模式 package nj zb kb23 kafka import org apache kafka clients consumer ConsumerConfig import org apache kafka clie
  • 关闭Windows Defender实时保护,暂时关闭和永久关闭方法

    暂时关闭Windows Defender实时保护 点击开始 设置 更新和安全 Windows安全中心 打开Windows安全中心 点击主页 病毒和威胁防护或管理设置 关闭实时保护 这样就暂时关闭了实时保护 就算不重启也可能某个时候又自动打开
  • 结构化查询语言之 SQL 视图定义(以 MySQL 为例)

    文章目录 1 视图介绍 2 视图定义 3 视图更新 查询使用的数据库文件下载 1 视图介绍 虚关系 并不预先计算并存储关系 而是在使用虚关系时才通过执行查询被计算出来 概念上包含查询的结果 任何不是逻辑模型的一部分 但作为虚关系对用户可见的
  • 中国1949至2019年的gdp图表_成都市1949至2019年,70年来历年GDP数据信息公布

    新中国成立时至此已经整整70年了 在这70年里成都市的经济发展可谓是非常亮眼 最近成都市发布的 成都市统计年鉴2019 受到了不少人的关注 其中最受关注的还是成都历年地区生产总值 也就是我们常说的GDP 具体名单见文末 在 成都统计年鉴20
  • Java中方法的学习

    目录 Java中的方法定义 设计方法的原则 方法的命名规则 代码实现 方法调用 方法的重载 方法学习不知死过多少次 还让我学是吧 你没完了哈 来 来 来 咱们一起来分析 老师 前面的关键字我讲过吧 数据类型还用说嘛 方法的定义格式我说过吧