Java 精炼解读方法的定义与使用

目录
  • 一、方法的基本用法
    • 1.1什么是方法(method)
    • 1.2方法定义语法 
    • 1.3方法的开辟 
  • 二、方法的重载 
  • 三、方法的使用 

一、方法的基本用法

1.1 什么是方法(method)

方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法可以把它理解为一个功能,这个功能是可以重复使用的。

1.2 方法定义语法 

目前来说写任何方法的时候都写成:

pubiic static 返回值 返回名称(形式参数列表){

函数体/方法体

}

代码举例:求1-n的和

 /**
     * 求我们1-n的和
     * 函数名字必须采用小驼峰
     * @param n 输入一个数字
     */
    public static int sumAdd(int n){
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            sum += i;
        }
        return sum;
    }

    public static void main(String[] args) {
        int ret = sumAdd(10);//方法的调用
    }

画图讲解:

函数返回值的链式调用:

还是按照上面的例子给大家举例一下: 

    /**
     * 求我们1-n的和
     * 函数名字必须采用小驼峰
     * @param n 输入一个数字
     */
    public static int sumAdd(int n){
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            sum += i;
        }
        return sum;
    }

    public static void main(String[] args) {
        int ret = sumAdd(10);//方法的调用
        System.out.println(sumAdd(10)*2);//函数的返回值,支持链式调用
    }

画图讲解:

 在Java里面没有函数声明,不管你的函数在main函数的上面还是在下面,都可以调用

1.3方法的开辟 

函数开辟内存空间叫做函数栈帧,每个函数调用的时候都会开辟栈帧,属于这个函数的内存

函数在内存空间是如何调用的:

举例:用函数的方法求n的阶乘之和 

用函数的方法求n的阶乘之和
public static int Fac(int n) {
        int sum = 1;
        for (int i = 1; i <= n; i++) {
            sum = sum * i;
        }
        return sum;
    }
    /**
     * 求n的阶乘之和
     * @param
     */
    public static int facSum(int n){
        int ret = 0;
        for (int i = 1;i <= n; i++){
            ret = ret + Fac(i);
        }
        return ret;
    }

    public static void main(String[] args) {

        System.out.println(facSum(5));
    }
}
1.Java无法通过传地址的方式交换两个值的变量,后续会讲怎么做
public class TestDemo {
    public static void swap(int a,int b){//交换两个变量的值
        int tmp = a;
        a = b;
        b = tmp;
    }

    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        System.out.println("交换实参前:"+a+" " +b);
        swap(&a,b);//Java是做不到取地址的,如果想要写一个函数交换两个数的的值,只能把a和b的值放到堆上
        System.out.println("交换实参后:"+a+" " +b);

    }
}

二、方法的重载 

有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载

画图讲解: 

方法的名字都叫 add. 但是有的 add 是计算 int 相加, 有的是 double 相加; 有的计算两个数字相加, 有的是计算三个数 字相加. 同一个方法名字, 提供不同版本的实现, 称为 方法重载 

三、方法的使用 

例题:用函数方式编写代码模拟三次登录场景

   public static void login(){
        int count = 3;
        Scanner scanner = new Scanner(System.in);
        while(count != 0){
            System.out.println("请输入你的密码");
            String password = scanner.nextLine();
            if(password.equals("123456")){//equals的返回值是true或者false
                System.out.println("登录成功了");
                break;
            }else{
                count--;
                System.out.println("你输错密码了,你还有"+count+"次机会");

            }
        }

    }

    public static void main(String[] args) {
        login();

    }

例题:函数求水仙花数 

 求水仙花数
public static void findNum(int n){

        for (int i = 1; i <=n; i++) {
            int count = 0;//数字的位数
            int tmp = i;
            while(tmp != 0){
                count++;
                tmp = tmp/10;
            }
            tmp = i;
            int sum = 0;
            while(tmp != 0){
                sum += Math.pow(tmp%10,count);
                tmp/=10;
            }
            if(sum == i){
                System.out.println(i);
            }

        }

    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        findNum(n);

    }

例题:求奇数位于偶数之前 

调整数组顺序使得奇数位于偶数之前,调整之后,不关心大小顺序
public class TestDemo {

    public static void main(String[] args) {
        int[]arr = {1,2,3,4,5,6,7,8,9};
        int left = 0;
        int right = arr.length-1;
        while(left < right){
            while(left < right && arr[left] % 2 != 0){
                left++;
            }
            while(left < right && arr[right] % 2== 0){
                right--;
            }
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
        }
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i]+" ");

        }

    }

}

例题: 函数求三个数的最大值

1.用函数求三个数的最大值
public class TestDemo {

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

    }
        public static int Max1(int a,int b,int c){
        return Max(Max(a,b),c);
        }

    public static void main(String[] args) {
        System.out.println(Max1(4, 6, 8));

    }

}

总结:

本文简单介绍了什么是方法、方法的重载、方法如何使用。通过简单例题的方式加深对方法的印象。上述就是今天的内容,有任何疑问的话可以随时私信我,文章哪里出现了问题我都会积极改正,也希望大家能更快的掌握自己想要的知识,让我们一起加油!!!!!

我与你同在。

到此这篇关于Java 精炼解读方法的定义与使用的文章就介绍到这了,更多相关Java 方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JAVA深入探究之Method的Invoke方法

    前言 在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到Method,这时去调用父类的对象也会报错.虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java是如何实现的,就学习了下Method的源代码. Method的invoke方法 1.先检查 AccessibleObject的override属性是否为true. Access

  • 详解Java中Method的Invoke方法

    在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到Method,这时去调用父类的对象也会报错.虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java是如何实现的,就学习了下Method的源代码.  Method的invoke方法 1.先检查 AccessibleObject的override属性是否为true. Accessib

  • Java 本地方法Native Method详细介绍

     Java 本地方法Native Method详细介绍 一. 什么是Native Method 简单地讲,一个Native Method就是一个Java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C.这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数. "A native method is a Java meth

  • java反射之Method的invoke方法实现教程详解

    前言 在框架中经常会会用到method.invoke()方法,用来执行某个的对象的目标方法.以前写代码用到反射时,总是获取先获取Method,然后传入对应的Class实例对象执行方法.然而前段时间研究invoke方法时,发现invoke方法居然包含多态的特性,这是以前没有考虑过的一个问题.那么Method.invoke()方法的执行过程是怎么实现的?它的多态又是如何实现的呢? 本文将从java和JVM的源码实现深入探讨invoke方法的实现过程. 首先给出invoke方法多态特性的演示代码: p

  • Java Method类及invoke方法原理解析

    在说Method和invoke的使用之前我们来看一个小例子, 如果看懂了那就ok了 public class MethodInvoke { class Animal { public void print() { System.out.println("Animal.print()"); } } class Cat extends Animal { @Override public void print() { System.out.println("Cat.print()&

  • Java 精炼解读方法的定义与使用

    目录 一.方法的基本用法 1.1什么是方法(method) 1.2方法定义语法  1.3方法的开辟  二.方法的重载  三.方法的使用  一.方法的基本用法 1.1 什么是方法(method) 方法就是一个代码片段. 类似于 C 语言中的 "函数".方法可以把它理解为一个功能,这个功能是可以重复使用的. 1.2 方法定义语法  目前来说写任何方法的时候都写成: pubiic static 返回值 返回名称(形式参数列表){ 函数体/方法体 } 代码举例:求1-n的和 /** * 求我们

  • Java 精炼解读类和对象原理

    面向对象.面向过程 什么是类? 什么是对象? 这是非常抽象的两个概念!!!!!!!! 在说清楚类和对象的概念之前,给大家讲一下什么是面向对象.面向过程,以此来推出我们类和对象的概念. 面向过程:以洗衣服为例:拿盆.放水.放衣服.放洗衣粉.手搓.换水.拧干.晾衣服,这个过程就是面向过程.  面向对象:以洗衣服为例:人把衣服放进洗衣机,倒入洗衣粉,洗完晾干,不需要关心洗衣服整个过程是怎么完成的,只需要找对象,创建对象,使用对象.在好比我们使用toString函数,我们并不关心toString函数具体

  • Java 精炼解读时间复杂度与空间复杂度

    目录 前言: 一.算法效率 二.时间复杂度 1.时间复杂度概念 2.大O的渐进表示法 计算时间复杂度 三.空间复杂度 总结: 前言: 所谓的复杂度就是衡量算法的效率,衡量算发效率又分为两种,一种叫做时间复杂度,一种叫做空间复杂度. 一.算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率.时间效率被称为时间复杂度,而空间效率被 称作空间复杂度. 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额 外空间,在计算机发展的早期,计算机的存储容量很小.所以对

  • Java 精炼解读递归的概念与使用

    目录 一.递归的概念 1.什么是递归? 2.递归讲解 二.递归的使用  总结: 一.递归的概念 1.什么是递归? 递归就是:方法自己调用方法的过程. 使用递归有两个前提条件: 1.有一个趋近与终止的条件. 2.自己调用自己 . 如何实现递归? 最重要的方式是:实现递归,需要去推导出一个递推公式. 思考递归的方式:横向思考,根据递推公式来思考. 代码的执行:是纵向执行. 2.递归讲解 首先看下面代码: public class TestDemo { public static void func(

  • Java 精炼解读数据结构逻辑控制

    目录 一.顺序结构 二.分支结构 switch语句  三.循环结构 3.1while循环  3.2break 3.3continue  3.4for循环  3.5dowhile循环(选学)  总结: 一.顺序结构 程序的执行和代码的执行顺序有关,如果调整代码的书写顺序, 则执行顺序也发生变化 二.分支结构 基本语法形式1: if(布尔表达式){     //条件满足时执行代码 } 基本语法形式2 if(布尔表达式){     //条件满足时执行代码 }else{     //条件不满足时执行代码

  • Java 精炼解读数据结构的顺序表如何操作

    目录 前言 一.什么是顺序表 顺序表的概念及结构 创建顺序表 获取顺序表长度 在pos位置新增元素 判定是否包含某个元素 查找某个元素对应的位置 获取pos位置的元素 给pos位置的元素设为value 删除你想要删除的元素 总结: 前言 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见 的线性表:顺序表.链表.栈.队列.字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线.但是在物理结构上并不一定是连续的,线性表在物

  • Java 精炼解读数据结构的链表的概念与实现

    目录 前言: 一.什么是链表 链表的概念 链表的结构 链表如何存储数据 链表的实现   穷举法创建链表 打印链表 查找是否包含关键字key是否在单链表当中  得到单链表的长度: 头插法 尾插法 任意位置插入,第一个数据节点为0号下标 删除第一次出现关键字为key的节点 删除所有值为key的节点 总结: 前言: 顺序表的问题及思考 1. 顺序表中间/头部的插入删除,时间复杂度为O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间.会有不小的消耗. 3. 增容一般是呈2倍的增长,势必会有一定的空

  • Java数据结构之简单链表的定义与实现方法示例

    本文实例讲述了Java数据结构之简单链表的定义与实现方法.分享给大家供大家参考,具体如下: 一.概述: 1.原理: 只有一个数据项(链接点Link),每个数据插入时都是对第一个数据的引用. 2.插入数据说明: 当链表没有数据时,插入的值就是第一个数据,如果链表里有数据,就把当前的数据的next指针指向第一个数据. 3.插入数据图: 4.特点:先进后出 5.实现功能: 数据插入,指定位置插入,显示,查询,删除等 6.删除原理 7.插入头节点原理 二.实现: 1.创建节点 /** * @描述 节点

  • Java二维数组简单定义与使用方法示例

    本文实例讲述了Java二维数组简单定义与使用方法.分享给大家供大家参考,具体如下: Java的二维数组是先创建一个一维数组,然后该数组的元素再引用另外一个一维数组.在使用二维数组的时候,通过两个中括号[]来访问每一层维度的引用,直到访问到最终的数据. public class MultiDimArray{ /** * @param args */ public static void main(String[] args) { int[][] arr = new int[3][]; arr[0]

  • Java泛型的概念、定义与运行方法分析

    本文实例讲述了Java泛型的概念.定义与运行方法.分享给大家供大家参考,具体如下: 一 点睛 所谓泛型,就是允许在定义类.接口的时候指定类型形参(类型的形式参数的简称),这个类型形参将在声明变量.创建对象时确定,即传入实际的类型参数,也称类型实参,这实际上就是将数据类型参数化.泛型可以用来定义泛型类.泛型方法和泛型接口. 二 代码 class Base<T> { T m; Base( T t ) { m = t; } public void print() { System.out.print

随机推荐