Java方法详解

什么是方法?

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

    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或对象中
    • 方法再程序中被创建,在其他地方被引用
    • 【方法原子性】一个方法只完成一个功能(有利于后期拓展)
  • 方法命名规则:首字母小写+驼峰

举例1:用方法来执行加法的功能

package com.ezra.main;public class AddDemo01 {public static double aDouble(double a,double b){return a+b;}public static int add(int a,int b){return a+b;}public static void main(String[] args) {double sum = aDouble(3.145,5.56);System.out.println(sum);int sum02 = add(58,894);System.out.println(sum02);}}

举例2:用方法来执行一个循环语句

package com.ezra.main;public class TextDemo01 {public static void main(String[] args) {test();}public static void test (){for (int i = 0; i < 1000; i++) {if (i%5==0){System.out.print(i+"\t");}if (i%(3*5)==0){System.out.println();}}}
}

方法的定义

修饰符 返回值类型 方法名 (参数类型 参数名){

方法体

return 返回值;

}

  • Java的方法类似于其它语言的函数,通过代码片段来完成特定的功能

    • 方法包含一个方法头和一个方法体
    • 修饰符:修饰符是可选的,用来告诉编辑器如何调用该方法,定义了该方法的访问类型
    • 返回值类型:方法可能会返回值,int、double都是返回值类型;有的方法执行所需操作但没有返回值,这种情况下,returnValueType是关键字void
    • 方法名:是方法的实际名称
    • 参数类型:参数更像是一个占位符,当方法被调用时,传递值给参数。参数是可选的,方法可以不包含任何参数
      • 形式参数:在方法被调用时用于接收外界输入的数据
      • 实际参数:调用方法时实际传递给方法的数据
    • 方法体:方法体包含具体的语句,定义该方法的功能
package com.ezra.main;public class AddDemo01 {public static void main(String[] args) {//a,b为实际参数double sum = aDouble(3.145,5.56);System.out.println(sum);int sum02 = add(58,894);System.out.println(sum02);}/*public static   修饰符double  返回值类型aDouble 方法名(double a,double b) 参数名a,b为形式参数,相当于占位符*/public static double aDouble(double a,double b){return a+b;}public static int add(int a,int b){return a+b;}
}

拓展:scanner和方法的联合实现

package com.ezra.main;import java.util.Scanner;public class TextDemo03 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Scanner scanner1 = new Scanner(System.in);System.out.print("请输入第一个数:");double num01 = scanner.nextDouble();System.out.print("请输入第二个数:");double num02 = scanner1.nextDouble();text(num01,num02);scanner.close();scanner1.close();}public static void text(double a, double b){if (a==b){System.out.println(a+"="+b);}else if (a>b){System.out.println(a+">"+b);}else {System.out.println(a+"<"+b);}}
}

方法的重载

重载就是在一个类中,有相同的函数名称,但形式参数不同的函数

package com.ezra.main;//add方法的重载public class AddDemo02 {public static void main(String[] args) {System.out.println(add(30,40,50.7));}public static int add(int a,int b){return a+b;}public static int add(int a,int b,int c){return a+b+c;}public static double add(double a,double b){return a+b;}public static double add(double a,double b,double c){return a+b+c;}
}

方法重载的规则:

  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同或类型不同、参数排列顺序不同)
  3. 方法的返回类型可以相同也可以不相同
  4. 仅仅返回类型不同不足以成为方法的重载

实现理论:

  • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败则编译器报错
package com.ezra.method;public class AddDemo03 {public static void main(String[] args) {System.out.println(add(50,30,30.5));}public static int add(int a,int b){return a+b;}public static int add(int a,int b,int c){return a+b+c;}public static int add(int a,int b,int c,int d){return a+b+c+d;}public static int add(int a,int b,int c,int d,int e){return a+b+c+d+e;}public static double add(double a,double b){return a+b;}public static double add(double a,double b,double c){return a+b+c;}public static double add(double a,double b,double c,double d){return a+b+c+d;}public static double add(double a,double b,double c,double d,double e){return a+b+c+d+e;}
}

命令行传递参数

package com.ezra.method;public class ArgsDemo01 {public static void main(String[] args) {for (int i = 0; i < args.length; i++) {int sum=i+1;System.out.println("第"+sum+"个字符是:"+args[i]);}}
}
  1. 使用javac命令编译java文件(因为代码中有中文,使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java)

  2. 推到src目录下运行class文件

可变参数

  • Java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数都必须在它之前声明
package com.ezra.method;public class MaxDemo01 {public static void main(String[] args) {printMax(100,50,30,5030,82,66,77,777,46.2,85.8);printMax(new double[]{77777,3512,2586,6823,957.86});}public static void printMax(double...i){if (i.length==0){System.out.println("请输入参数!");return;}double result = i[0];for (int j=1;j<i.length;j++){if (i[j]>result){result=i[j];}}System.out.println("此数组最大的数为:"+result);}
}

递归

  1. 递归就是用A方法去调用A方法
  2. 递归结构
    • 递归头:什么时候不用调用自身方法(如果没有递归头,代码将陷入死循环)
    • 递归体:调用自身方法的循环
  3. 【能不用递归就不用递归,基数小的情况下选择递归,基数过大时会造成过多的栈导致系统崩溃】
package com.ezra.method;public class Demo01 {public static void main(String[] args) {System.out.println(i(5));}public static int i(int x){if (x==1){return 1;       //当x=1时,不再调用自身;这就是递归头}else {return x*i(x-1);        //调用自身的循环,这就是递归体}}
}

计算器小练习

package com.ezra.method;import java.util.Scanner;public class TextDemo04 {public static void main(String[] args) {Scanner scanner1 = new Scanner(System.in);System.out.println("请输入第一个数:");double a=scanner1.nextDouble();Scanner scanner2 = new Scanner(System.in);System.out.println("请输入运算符号:");String c=scanner2.nextLine();Scanner scanner3 = new Scanner(System.in);System.out.println("请输入第二个数:");double b=scanner3.nextDouble();if (a%1==0 && b%1==0){switch (c){case "+":System.out.println("答案为:"+(int)add(a,b));break;case "-":System.out.println("答案为:"+(int)subtract(a,b));break;case "*":System.out.println("答案为:"+(int)multiply(a,b));break;case "/":System.out.println("答案为:"+divide(a,b));break;default:System.out.println("请输入+-*/中的符号,谢谢!");}}else {switch (c){case "+":System.out.println("答案为:"+add(a,b));break;case "-":System.out.println("答案为:"+subtract(a,b));break;case "*":System.out.println("答案为:"+multiply(a,b));break;case "/":System.out.println("答案为:"+divide(a,b));break;default:System.out.println("请输入+-*/中的符号,谢谢!");}}scanner1.close();scanner2.close();scanner3.close();}public static int add(int a,int b){return a+b;}public static double add(double a,double b){return a+b;}public static int subtract(int a,int b){return a-b;}public static double subtract(double a,double b){return a-b;}public static int multiply(int a,int b){return a*b;}public static double multiply(double a,double b){return a*b;}public static int divide(int a,int b){return a/b;}public static double divide(double a,double b){return a/b;}
}

Day13-Java方法详解,方法的定义、重载,命令行传参,可变参数与递归相关推荐

  1. Java学习第八天<什么是方法><方法的定义和调用><方法的重载><命令行传参><可变参数><递归详解>

    什么是方法 System.out.println(); 调用系统类里的标准输出对象(out)中的方法println public class Demo01 {//main 方法public stati ...

  2. python argv 详解_python解析传入的命令行参数 argv

    python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1 ...

  3. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  4. 【linux】Valgrind工具集详解(五):命令行详解

    一.使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二.选择工具 tool-selection opti ...

  5. Windows系统 gpedit命令详解,Windows系统使用命令行查看组策略

    「作者主页」:士别三日wyx 第一步.打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」 第二步.查看组策略 在打开的cmd窗口中,输入 gpedit 后回车,即可在新弹出的窗口中 ...

  6. Windows系统 winver命令详解,Windows系统使用命令行查看系统版本

    「作者主页」:士别三日wyx 第一步.打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」 第二步.查看系统版本 在打开的cmd窗口中,输入 winver 后回车,即可在新弹出的窗口 ...

  7. java 方法体 out 参数_Java方法详解

    方法详解 1.方法的定义 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合,包含于类或对象中:在程序中被创建,在其它地方被引用 设计方法的原则:要遵守原子性,即一个 ...

  8. Java方法详解(基础)

    Java方法详解(基础) 什么是方法? System.out.println():调用系统类标准输出对象方法out. 方法是语句的集合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合. ...

  9. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

最新文章

  1. Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(三)
  2. 工业4.0的十大关键词
  3. Python中最好用的命令行解析工具:argparse
  4. java文件流读取异常_Java IO流的FileInputStream读取文件的问题,不同写法输出不一样...
  5. 011_Vue自定义指令
  6. 【题解】luogu P1757 通天之分组背包
  7. JavaScript入门(part8)--数组
  8. DOM-2 document对象、获取元素、节点、遍历树
  9. jQuery 事件 - bind() 方法
  10. python面向对象(特征,原则)01
  11. 中国公司又称雄国际AI大赛,IARPA人脸识别挑战赛依图夺冠
  12. exception类型 java_程序员小白入门,Java如何选择异常类型?
  13. 用SQL备份数据库表
  14. 网络管理之SNMP协议
  15. c++ 代码_C|函数调用约定与堆栈平衡的汇编代码分析
  16. 计算机无法登陆提示rpc服务器不可用,电脑提示RPC服务器不可用的解决方法
  17. 【解密】筛选数据分析师简历全流程
  18. 用javascript分类刷leetcode4.贪心(图文视频讲解)
  19. global mapper裁剪DEM文件的方法
  20. 前端转java学习之路(一):java高精度计算之bigdecimal

热门文章

  1. python爬虫-获取腾讯视频的弹幕
  2. java基本语法实验体会_Java基本语法实验报告
  3. 【ceph】CEPH源码解析:读写流程
  4. 一到面试就紧张,该怎么办?
  5. 面试题之数据库脏读、不可重复读、幻读
  6. 华为MateBook D14 安装ubuntu16 wifi、蓝牙、触控板驱动问题解决
  7. 什么是飞机的上反效应
  8. 国内低代码平台有哪些?织信informat好不好用?
  9. pcm vlc 文件_VLC播放pcm
  10. 计算机网络国际标准界最,计算机网络标准综述.pdf