IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java04-方法 -> 正文阅读

[Java知识库]java04-方法

方法

方法有点向oracle 存储过程的函数
方法的定义:
Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法
包含以下语法:

修饰符 返回值类型 方法名(参数类型 参数名){ … 方法体 … return 返回值; }

  • 方法包含一个方法头和一个方法体。

  • 下面是一个方法的所有部分:

  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需

    的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。

  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参
    数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

  • 方法体:方法体包含具体的语句,定义该方法的功能。
    比如: 传入两个整数,求最大的那个值:

 public class NewGame {
    public static void main(String[] args) {
        System.out.println(get_max(1,2));
    }
    public static int get_max(int a,int b)
    {
        return a>b?a:b;
    }

}

方法的重载

上面使用的max方法仅仅适用于int型数据。但如果你想得到两个浮点类型数据的最大值呢?
解决方法是创建另一个有相同名字但参数不同的方法,如下面代码所示:

public class NewGame {
    public static void main(String[] args) {
        System.out.println(get_max(1.1f, 2));
    }

    public static int get_max(int a, int b) {
        return a > b ? a : b;
    }

    public static float get_max(float a, float b) {
        return a > b ? a : b;
    }
}   //结果返回0

可变参数

在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声
明。语法(int… a)

例子: 传入参数,求最大值:

public class NewGame {
    public static void main(String[] args) {
        System.out.println(get_max(1,2,3.4,4.5));
    }
    public static double get_max(double... a){
        double max;
        double s=a[0];
        for (int i = 0; i < a.length; i++) {
          if(a[i]>s)
          {
              s=a[i];
          }

        }
        return s;
    }
} 

递归

递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个
使用递归技术的方法将会直接或者间接的调用自己。
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原
问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计
算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:

  1. 递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。
  2. 递归体。解答:什么时候需要调用自身方法。
  3. 递归其实是方便了程序员难为了机器,递归可以通过数学公式很方便的转换为程序。
  4. 其优点就是易理解,容易编程。但递归是用栈机制实现的,每深入一层,都要占去一块栈数据区域,对嵌套层数深的一些算法,递归会力不从心,空间上会以内存崩溃而告终,而且递归也带来了大量的函数调用,这也有许多额外的时间开销。所以在深度大时,它的时空性就不好了。(会占用大量的内存空间)而迭代虽然效率高,运行时间只因循环次数增加而增加,没什么额外开销,空间上也没有什么增加,但缺点就是不容易理解,编写复杂问题时困难

两道经典的递归题目:
在这里插入图片描述

//1,1,2,3,5,8,13 给出任意一个整数,求值
public class NewGame {
    public static void main(String[] args) {
        System.out.println(get_fin(6));
    }
    public static int get_fin(int n){
        if(n==1){
            return 1;
        }
        else if(n==2){
            return 2;
        }
        else {
            return get_fin(n - 1) + get_fin(n - 2);
        }
    }
}   //结果返回13
//猴子吃桃子问题:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!
// 以后每天猴子都吃其中的一半,然后再多吃一个。当到第10天时,
// 想再吃时(即还没吃),发现只有 1个桃子了。问题:最初共多少个桃子?
//f(10)=1;f(9)=4;f(8)=10;f(7)=22;(f(n+1)+1)*2=f(n)
public class NewGame {
    public static void main(String[] args) {
        System.out.println(get_fin(1));
    }
    public static int get_fin(int n){
        if(n==10){
            return 1;
        }
        else {
            return 2*(get_fin(n+1)+1);
        }
    }
}   //结果返回1534
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:03:47  更:2022-02-03 01:04:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 3:57:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码