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 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 05.Java中方法的使用 -> 正文阅读

[游戏开发]05.Java中方法的使用

1.一个例子带你快速了解Java中方法的使用

public class TestDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //循环输入
        while(sc.hasNextInt()){
            int year=sc.nextInt();
            isLeapYear(year);
        }
    }
    //自定义方法————判断闰年
    public static void isLeapYear(int year){
        if((year%4==0&&year%100!=0)||year%400==0){
            System.out.println("闰年");
        }
        else{
            System.out.println("平年");
        }
    }
}

2.形参和实参的关系

在Java中,实参永远都是拷贝到形参中,形参和实参本质是两个实体

public  static void swap(int x,int y){
        int tmp=x;
        x=y;
        y=tmp;
        System.out.println("x="+x+" , y="+y);
    }
    public static void main(String[] args) {
        int a=10;
        int b=20;
        swap(a,b);
        System.out.println("a="+a+" , b="+b);
    }

可以看到, 对 x 和 y 的修改, 不影响 a 和 b
注意:对于基础类型来说, 形参相当于实参的拷贝. 即 传值调用

解决方法:传引用类型参数 (例如数组来解决这个问题)

public static void swap1(int []arr){
        int tmp=arr[0];
        arr[0]=arr[1];
        arr[1]=tmp;
    }

    public static void main(String[] args) {
        int [] arr;
        arr=new int [2];
        arr[0]=10;
        arr[1]=20;
        System.out.println("交换前: arr[0]="+arr[0]+" arr[1]= "+arr[1]);
        swap1(arr);
        System.out.println("交换后: arr[0]="+arr[0]+" arr[1]= "+arr[1]);
    }

运行结果:
在这里插入图片描述

3.方法重载

重载规则:

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  3. 与返回值类型是否相同无关

例:

public static int add(int x,int y){
        return x+y;
    }
    public static double add(double x,double y){
        return x+y;
    }
    public static double add(double x,double y,double z){
        return x+y+z;
    }
    public static void main(String[] args) {
        int a=10;
        int b=20;
        double c=20.0;
        double d=30.0;
        double e=40.0;
        System.out.println(add(a,b));
        System.out.println(add(c,d));
        System.out.println(add(c,d,e));
    }

编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法

4.方法的递归:

4.1求斐波那契数列某一项的值

在这里插入图片描述

//求斐波那契数列某一项的值
    public static int fib(int n){
        if(n==1||n==2){
            return 1;
        } else{
            return fib(n-1)+fib(n-2);
        }
    }

    public static void main(String[] args) {
        int n=0;
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            n=sc.nextInt();
            int ret=fib(n);
            System.out.println(ret);
        }
    }

4.2青蛙跳台阶问题

![在这里插入图片描述](https://img-blog.csdnimg.cn/641c18ee85794c69a47c76681c143b55.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5q-U54m5IGZseQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
//青蛙跳台阶问题
    public static int footStep(int n){
        if(n==1){
            return 1;
        }else if(n==2){
            return 2;
        }else{
            return footStep(n-1)+footStep(n-2);
        }
    }
    public static void main(String[] args) {
        int n=0;//台阶个数
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            n=sc.nextInt();
            int ret=footStep(n);
            System.out.println(ret);
        }
    }

4.3汉诺塔问题

在这里插入图片描述

//汉诺塔问题
    public static int hanoi(int n){
        if(n==1){
            return 1;
        }else{
            return 2*hanoi(n-1)+1;
        }
    }
    public static void main(String[] args) {
        int n=0;
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            n=sc.nextInt();
            int ret=hanoi(n);
            System.out.println(ret);
        }
    }
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:25:48  更:2022-03-21 21:29:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 18:39:04-

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