一、方法概述和格式说明
为什么要用方法:
  • 提高代码的复用性
什么是方法:
  • 完成特定功能的代码块
方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
    方法体语句;
    return 返回值;
}
方法的格式说明:
  • 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
  • 返回值类型:就是功能结果的数据类型。
  • 方法名:符合命名规则即可。方便我们的调用。
  • 参数:
    • 实际参数:就是实际参与运算的。
    • 形式参数;就是方法定义上的,用于接收实际参数的。
  • 参数类型:就是参数的数据类型
  • 参数名:就是变量名
  • 方法体语句:就是完成功能的代码。
  • return:结束方法的。
  • 返回值:就是功能的结果,由return带给调用者。
 
二、方法之求和案例及其调用
 1 public class JavaDemo {
2 public static void main(String[] args) {
3 /*
4 * A:如何写一个方法
5 * 1,明确返回值类型
6 * 2,明确参数列表
7 * B:案例演示
8 * 需求:求两个数据之和的案例
9 * C:方法调用图解
10 */
11 System.out.println("两数之和为:" + sum(10, 20));
12 }
13 /*
14 * 求两个整数的和
15 */
16 public static int sum(int i, int j) {
17 return i + j;
18 }
19 }
方法的注意事项
  • 方法调用(有具体返回值)
    • 单独调用,一般来说没有意义,所以不推荐。
    • 输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。
    • 赋值调用,推荐方案。
  • 方法不调用不执行
  • 方法与方法是平级关系,不能嵌套定义
  • 方法定义的时候参数之间用逗号隔开
  • 方法调用的时候不用在传递数据类型
  • 如果方法有明确的返回值,一定要有return带回一个值
/*
* A:案例演示
  * 需求:根据键盘录入的行数和列数,在控制台输出星形
* B:方法调用:
  * 单独调用
  * 输出调用(错误)
  * 赋值调用(错误)
*/
 1 import java.util.Scanner;
2 class JavaDemo {
3 public static void main(String[] args) {
4 Scanner sc = new Scanner(System.in); //创建键盘录入对象
5 System.out.println("请输入行数:");
6 int row = sc.nextInt(); //将键盘录入的行数存储在row中
7 System.out.println("请输入列数:");
8 int column = sc.nextInt(); //将键盘录入的列数存储在column中
9
10 //System.out.println(print(row,column)); //错误: 此处不允许使用 '空' 类型,返回值是void的方法不能输出调用
11 //返回值是void的方法只能单独调用
12 print(row,column);
13 }
14 /*
15 在控制台输出矩形星形
16 1,明确返回值类型,经分析没有具体的返回值类型,void
17 2,明确参数列表int a,int b
18 */
19 public static void print(int a,int b) {
20 for (int i = 1;i <= a ;i++ ) { //行数
21 for (int j = 1;j <= b ;j++ ) { //列数
22 System.out.print("*");
23 }
24 System.out.println();
25 }
26 //return ; //如果返回值类型是void,return可以省略,即使省略系统也会默认给加上,形式是return;
27 }
28 }
29
30 /*
31 * A:案例演示
32 * 需求:根据键盘录入的数据输出对应的乘法表
33 */
34 import java.util.Scanner;
35 class JavaDemo {
36 public static void main(String[] args) {
37 Scanner sc = new Scanner(System.in); //创建键盘录入对象
38 System.out.println("请输入一个整数,范围在1~9之间");
39 int num = sc.nextInt(); //将键盘录入的行数存储在num中
40 print99(num);
41 }
42 /*
43 打印99乘法表
44 1,返回值类型为空void
45 2,明确参数列表int a
46 */
47 public static void print99(int a) {
48 for (int i = 1;i <= a ;i++ ) { //行数
49 for (int j = 1;j <= i ;j++ ) { //列数
50 System.out.print(j + "*" + i + " = " + (i * j) + "\t");
51 }
52 System.out.println();
53 }
54 //return ; //如果返回值类型是void,return可以省略,即使省略系统也会默认给加上,形式是return;
55 }
56 }
三、方法重载概述和基本使用
方法重载:
  • 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
  • 参数列表不同:
    • 参数个数不同
    • 参数类型不同:
      • 参数的顺序不同(算重载,但是在开发中不用)
/*
* 重载:方法名相同,参数列表不同,与返回值类型无关
* 重载的分类:
  * 参数个数不同
  * 参数类型不同:
  *   顺序不同
*/
 1 class JavaDemo {
2 public static void main(String[] args) {
3 double sum = add(10.3, 29);
4 System.out.println("两数之和:" + sum);
5 int sum1 = add(10, 29, 22);
6 System.out.println("三数之和:" + sum1);
7
8 double sum3 = add(10.11, 29);
9 System.out.println("两个小数之和:" + sum3);
10 }
11 /*
12 求两个数之和
13 1,返回值类型为int
14 2,明确参数列表int a, int b
15 */
16 public static double add(int a, double b) {
17 return a + b;
18 }
19
20 /*
21 求三个数之和
22 1,返回值类型为int
23 2,明确参数列表int a, int b,int c
24 */
25 public static int add(int a, int b, int c) {
26 return a + b + c;
27 }
28
29 /*
30 求两个小数之和
31 1,返回值类型为double
32 2,明确参数列表double a, double b
33 */
34 public static double add(double a, int b) {
35 return a + b;
36 }
37 }
1 public static 返回值类型 方法名称([参数类型 变量.....]) {
2 // 该方法要执行的代码
3 [return[返回值];]
4 }
    对于返回值而言就可以使用Java中定义的数据类型(基本数据类型、引用数据类型),在方法之中可以进行返回数据的处理;如果要返回数据则可以使用return来描述,return所返回的数据类型与方法的返回值类型相同,如果不返回数据,则该方法可以使用void进行申明
    关于方法名称与变量的定义命名要求:
  • 在进行方法名称定义的要求第一个单词的字母小写,而后每个单词的首字母大写
  • 在进行变量名称定义的要求第一个单词的字母小写,而后每个单词的首字母大写
 1 // 定义一个无参无返回值的方法
2 public class JavaDemo {
3 public static void main(String[] args) {
4 printMessage( );
5 printMessage( );
6 }
7 public static void printMessage( ) {
8 System.out.println("*********************");
9 System.out.println("***** welcome to *****");
10 System.out.println("*********************");
11 }
12 }
13 方法的本质就是方便使用者进行重复调用,并且所有的程序一定都是通过主方法开始执行的
14 // 定义一个有参数有返回值的方法
15 public class JavaDemo {
16 public static void main(String[] args) {
17 System.out.println(login("admin"));
18 System.out.println(login("123"));
19 System.out.println(login("1234"));
20 }
21 public static String login(String user) {
22 if (user == "admin") {
23 return "输入用户名正确:" + user;
24 } else if (user == "123") {
25 return "输入密码正确:" + user;
26 } else {
27 return "用户名密码错误:" + user;
28 }
29 }
30 }
31 方法定义的时候,如果方法的返回值类型为void,可以利用rerun来结束调用
32 public class JavaDemo {
33 public static void main(String[] args) {
34 getMessage(3);
35 getMessage(-3);
36 }
37 public static void getMessage( int print) {
38 if (print < 0) {
39 return;
40 }
41 for (int i = 0; i <= 3; i++) {
42 System.out.println("打印:" + i + "次");
43 }
44 }
45 }
四、方法重载
    方法重载的定义:当方法名称相同,参数类型或个数不同的时候就称为方法重载。
 1 // 定义该方法可以接收两个int变量,三个int变量、两个double变量的加法处理
2 // 采用方法重载定义
3 public class JavaDemo {
4 public static void main(String[] args) {
5 int resultA = sum(10, 24);
6 int resultB = sum(10, 20,30);
7 double resultC = sum(11.1, 113.2);
8 System.out.println("计算结果为:" + resultA);
9 System.out.println("计算结果为:" + resultB);
10 System.out.println("计算结果为:" + resultC);
11 }
12
13 public static int sum(int x, int y) {
14 return x + y;
15 }
16
17 public static int sum(int x, int y, int z) {
18 return x + y + z;
19 }
20
21 public static double sum(double x, double y) {
22 return x + y;
23 }
24 }
    同一个方法名称可以根据调用时传递的不同参数的类型或个数实现不同方法体的调用,这就实现了方法重载的定义
    方法的重载与方法的返回值类型没有任何的关系,它只跟参数有关系
五、可变参数(不定项参数)
  • JDK1.5,java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后面加一个省略号(...)
  • 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明
 1 package com.sujian.operator;
2 public class JavaDemo {
3 public static void main(String[] args) {
4 // 调用可变参数方法
5 printMax(11, 22, 33, 44, 55);
6 printMax();
7 }
8 public static void printMax(int... nums) {
9 if (nums.length == 0) {
10 System.out.println("参数空");
11 return;
12 }
13 int result = nums[0];
14 // 排序
15 for (int i = 0; i < nums.length; i++) {
16 if (nums[i] > nums[0]) {
17 result = nums[i];
18 }
19 }
20 System.out.println("最大值是:" + result);
21 }
22 }
六、方法的递归调用
    方法的递归调用指的是一个方法自己调用自己的情况,使用方法递归调用的时候一般需要考虑如下几点:
  • 一定要设置方法递归调用的结束条件;
  • 每一次调用的过程之中一定要修改传递的参数条件
 1 public class JavaDemo {
2 public static void main(String[] args) {
3 System.out.println(sum(100));
4 }
5
6 public static int sum(int num) {
7 if (num == 1) {
8 return 1;
9 }
10 return num + sum(num - 1); // 递归调用
11 }
12 }
13 对以上代码进行分析处理:
14 【第1次执行sum()、主方法执行】return 100 + sum(99);
15 【第2次执行sum()、sum()递归调用】return 99 + sum(98);
16 ... ... ... ....
17 【第99次执行sum()、sum()递归调用】return 2 + sum(1);
18 【第100次执行sum()、sum()递归调用】return 1;
19 整体形式为:return 100 + 99 + 98 + .... .... + 2 + 1;
20
21 package com.sujian.method;
22 public class JavaDemo {
23 public static void main(String[] args) {
24 System.out.println(f(5));
25 }
26 /**
27 * 阶乘递归调用
28 * @param n
29 * @return
30 */
31 public static int f(int n) {
32 if (n == 1) {
33 return 1;
34 } else {
35 return n * f(n - 1);
36 }
37 }
38 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 

200-Java语言基础-Java编程入门-005 | Java方法定义及使用的更多相关文章

  1. 【百度文库课程】Java语言基础与OOP入门学习笔记一

    一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  2. day01<计算机基础知识&Java语言基础>

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

  3. day04<Java语言基础+>

    Java语言基础(循环结构概述和for语句的格式及其使用) Java语言基础(循环结构for语句的练习之获取数据) Java语言基础(循环结构for语句的练习之求和思想) Java语言基础(循环结构f ...

  4. day03<Java语言基础+>

    Java语言基础(逻辑运算符的基本用法) Java语言基础(逻辑运算符&&和&的区别) Java语言基础(位运算符的基本用法1) Java语言基础(位异或运算符的特点及面试题) ...

  5. day02<Java语言基础+>

    Java语言基础(常量的概述和使用) Java语言基础(进制概述和二,八,十六进制图解) Java语言基础(不同进制数据的表现形式) Java语言基础(任意进制到十进制的转换图解) Java语言基础( ...

  6. Java入门篇(二)——Java语言基础(下)

    上篇说到Java中的变量与常量,接下来就是简单的计算了,首先需要了解一下Java中的运算符. 六.运算符 1. 赋值运算符 赋值运算符即"=",是一个二元运算符(即对两个操作数进行 ...

  7. 2018.3.5 Java语言基础与面向对象编程实践

    Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...

  8. Java语言基础(五)

    Java语言基础(五) 一.浮点数 浮点数就是小数,其标准是IEEE 754,用指数和尾数表示 例如30000=3*10000=3*10^4  其中4是指数,3是尾数 Java中,浮点数有float ...

  9. Java语言基础(一)

    Java语言基础(一) 在这里说明一下,有基础的跳过 高手跳过.在这里我想复习以前的东西,以及给正在学java的一些帮助 我用的MyEclipse8.5编写java代码,有需要联系我  QQ:9035 ...

随机推荐

  1. 洛谷P2241-统计方形-矩形内计算长方形和正方形的数量

    洛谷P2241-统计方形 题目描述: 有一个 \(n \times m\) 方格的棋盘,求其方格包含多少正方形.长方形(不包含正方形). 思路: 所有方形的个数=正方形的个数+长方形的个数.对于任意一 ...

  2. 国产网络损伤仪 SandStorm -- 什么是链路规则?

    "链路规则"是网络损伤仪SandStorm(又名弱网测试仪)里面非常重要的功能,主要用于不同仿真链路之间的选择. 如下图的所示:                           ...

  3. 交换机上禁止某个MAC地址通信

    当分析出网络中某台机器中毒时而有不知道它的具体位置,我们可以通过获取其MAC地址然后在交换机上禁止其MAC来达到隔离它的效果.通过ARP表查询IP地址对应的MAC地址,再将该MAC地址加入黑名单过滤. ...

  4. Redis 穿透 & 击穿 & 雪崩

    原文:https://www.cnblogs.com/binghe001/p/13661381.html 缓存穿透 如果在请求数据时,在缓存层和数据库层都没有找到符合条件的数据,也就是说,在缓存层和数 ...

  5. Atlas 读写分离 & Atlas + MHA 故障自动恢复

    目录 Atals 介绍 Atlas 主要功能 Atlas 相对于官方 MySQL-Proxy 的优势 Atlas 使用 Atlas 安装 Atlas 目录 Atlas 配置 Atlas 启动 Atla ...

  6. leetcode10 正则表达式匹配 dp

    刚好最近在学编译原理 有点想按照语法分析写..不过用不着 因为知道正则表达式对一个串可能有多种匹配方法,所以要准备好回溯. 有最优子结构,一段s由一段p生成,于是dp. 常规思路是从前开始逐个字符匹配 ...

  7. favicon.ico All In One

    favicon.ico All In One link rel="icon" type="image/x-icon" href="http://exa ...

  8. js console API All In One

    js console API All In One const log = console.log; for(const key in console) { log(`navigator.${key} ...

  9. Vue 3 In Action

    Vue 3 In Action $ yarn add vue https://v3.vuejs.org demos refs https://v3.vuejs.org/guide/migration/ ...

  10. js & while & do while

    js & while & do while https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Stat ...