Java 方法的定义、调用、值传递、重载、命令行传递参数

  • 1. 什么是方法?
  • 2. 方法的定义和调用
  • 3. 值传递和引用传递
  • 4. 方法的重载
  • 5. 命令行传递参数
  • 6. 可变参数(输入参数的数量不确定)

1. 什么是方法?

(1)如System.out.println(),指调用系统类System中的标准输出对象out中的println()方法;
(2)方法的定义: Java方法是语句的集合,它们在一起执行一个特定功能:
a. 方法是解决一类问题的步骤的有序组合;
b. 方法包含于类或对象中;
c. 方法在程序中被创建,在其他地方被引用;
(3)设计方法的原则 :方法的本意是功能块,就是实现某个功能的语句块的集合。设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于后期的扩展。
(4)方法的命名规则 :首字母小写和驼峰原则,如evenSum(),oddSum() 。

2. 方法的定义和调用

方法定义:

(1)Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
方法包含一个方法头和一个方法体 ,下面是一样方法的所有部分:
1)修饰符: 可选的,告诉编译器如何调用该方法,定义该方法的访问类型。public、static等
2)返回值类型: 方法可能会返回值。有些方法执行所需操作,但没有返回值,此时返回值类型为void。
3)方法名: 方法的实际名称,方法和参数表共同构成方法签名。首字母小写和驼峰原则。
4)参数类型: 参数像是一个占位符,当方法被调用时,传递值给参数,这个值被称为实参或变量,参数列表是指方法的参数类型、顺序和参数的格式。可选,可不包含参数。
形式参数:在方法被调用时勇于接受外接输入的数据。用来定义作用的。
实参:调用方法时实际传给方法的数据。

public class data{// main方法public static void main(String[] args){// 实际参数:实际调用传递的参数,如1传递给a,2传递给b,1和2为实际参数int sum = add(a:1, b:2);// int sum = add(1,2);System.out.println();}// 形式参数用来定义作用的,如int a和int bpublic static int add(int a, int b){return a+b;}
}

5)方法体: 包含具体语句,定义方法功能。

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

6)return 0表示终止方法。

方法调用:

1)调用方法: 对象名.方法名(实参列表)
2)调用方式: Java支持两种调用方法的方式,根据方法是否返回值来选择。
当方法返回一个值的时候,方法调用通常被当做一个值。如int sum = add(1,2);
当方法返回值是void时,方法调用一定是一条语句。如System.out.println("Hello World !");

3. 值传递和引用传递

1)值传递: pass by value,在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会改变影响到原来的实际参数。Java是值传递。
2)引用传递: pass by reference,在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会改变影响到实际参数。
3)举例说明:
值传递的代码测试:

public class data {public static void main(String[] args) {// 基本数据类型int i = 10;  //实际参数value(i);System.out.println("i = " + i); // 输出实际参数的值}public static void value(int v) {v = 20; // 在该方法中改变参数的值System.out.println("v = " + v); // 输出在方法中改变后的参数值}}

结果:

结论:
值传递的时候,传入的实际参数int i传入后,复制了一份传递到函数中,int v被赋值,在函数中修改int v的值不影响int i的值。

4. 方法的重载

(1)定义: 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
(2)方法的重载的规则:
a. 方法名称必须相同;
b. 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等);
c. 方法的返回类型可以相同也可以不同;
d. 仅仅返回类型不同不足以成为方法的重载。
(3)实现理论:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
举例:

public class data{// main方法public static void main(String[] args){int sum = add(a:1, b:2);// int sum = add(1,2);System.out.println();}public static int add(int a, int b){return a+b;}// 对int add(int a, int b)方法的重载public static double add(double a, double b){return a+b;}// 对int add(int a, int b)方法的重载public static int add(int a, int b, int c){return a+b+c;}
}

上述代码中double add(double a, double b)和add(int a, int b,int c)都是对int add(int a, int b)的重载,三者的名称一样,但是参数的类型不同,返回类型不同。当在main中执行add(1,2)时会自动匹配对应的方法。

5. 命令行传递参数

有时候希望运行一个程序的时候再传递消息给它,这要靠传递命令行参数给main()函数实现。
main()函数的参数是一个数组。
测试代码:

public class data {public static void main(String[] args) {//args.length数组长度for(int i=0; i<args.length;i++){System.out.println("args["+i+"]:"+args[i]);}}
}

编译过程:(使用cmd)以及运行结果:遍历输出命令行输入的数组

6. 可变参数(输入参数的数量不确定)

(1)也称作不定项参数,传递参数的数量不一定。
(2)JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。
(3)在方法声明中,在指定参数类型后加一个省略号(…)。
(4)一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

public class data {public static void main(String[] args) {data data1 = new data();data1.test(1,2,3,4,45,5);}public void test(int x,int... i){}
}

测试代码:
在输入的double类型的数据(数据的数量不确定)中找到并输出最大的数。

public class data {public static void main(String[] args) {//调用可变参数方法一data data1 = new data();data1.printMax(10,15,2,8,12,111,23);//调用可变参数方法二printMax(10,15,2,8,12,111,23);//调用可变参数方法三printMax(new double[]{10,15,2,8,12,111,23});}public static void printMax(double... numbers) {if(numbers.length == 0){System.out.println("No argument passed");return;}double result = numbers[0];//找最大值for(int i =1 ;i < numbers.length; i++){if(numbers[i] > result){result = numbers[i];}}System.out.println("The max value is " + result);}
}

结果:

Java方法01 方法(函数)定义、调用、值传递、重载、命令行传递参数相关推荐

  1. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  2. 一个自建的Java命令行解析参数类ArgumentsParser

    文章目录 1 简介 2 参数格式定义 3 类功能介绍 3.1 初始化 3.2 主要函数 4 源代码 5 输出结果 6 小结 1 简介 在前文中,介绍了一个Python中的 argparse.Argum ...

  3. tf.app.flags 定义命令行可选参数

      tensorflow 定义了tf.app.flags,它是用来支持接受命令行传递参数,相当于接受argv,其中tf.app.flags.DEFINE_xx()用来添加命令行的optional ar ...

  4. java 输入 方程,用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java...

    题目: 用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a.b及c从命令行做参数输入 java 答案参考: 以下程序在jdk5.0测试通过 import java.util.Sca ...

  5. Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]

    1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...

  6. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值

    使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...

  7. java 动态调用函数_深入讲解Java语言中的函数动态调用方式

    相 信 有 不 少 人 使 用C 语 言 的 函 数 指 针 实 现 过 函 数 的 动 态 调 用. 适 当 地 运 用 函 数 动 态 调 用 功 能 不 仅 能 减 少 代 码 数 量, 而 且 ...

  8. main函数参数,在VS中向命令行添加参数的方法

    问题描述 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数"-a"选项执行加法,"-s"选项执行减法,"-m"选 ...

  9. wkhtmltopdf使用方法,页脚 加页码 pdftk合并pdf命令行操作

    wkhtmltopdf pdftk使用方法 htmltopdf 安装配置路径 htmltopdf 打开官网:https://wkhtmltopdf.org/downloads.html 安装配置路径 ...

最新文章

  1. python实验指导书2018_python实验指导书
  2. [学习笔记]树链剖分
  3. 2021夏季每日一题 【week2 未完结】
  4. Exp3 免杀原理与实践 20164309
  5. background 旋转_第4章 旋转的圆弧(《Python趣味创意编程》教学视频)
  6. java flv转mp3_【转载】音频视频转化工具JAVE(ffmpeg的Java封装)
  7. 1月31日 资源网站(素材模板)
  8. 日志打印工具类LogUtils
  9. filter的作用 一
  10. qt 无框dockwidget_QT解决通过菜单方式无法让QDockWidget 显示和隐藏
  11. C# 多线程处理 I(转载)
  12. oracle数据库课后报告,ORACLE数据库课程设计报告
  13. 解释PBR纹理贴图(texture-maps)
  14. cad命令栏还原默认_将CAD恢复到默认界面的两种方法,来看看吧
  15. 从移动为例,看运营商的大数据能力
  16. 数位笔的笔芯磨损到什么程度需要更换?压感笔笔芯怎么更换?
  17. 【线上讲座】如果转型为AI人工智能?
  18. 中国式智慧:古人为何乐意露破绽给皇帝?
  19. MyEclipse2014下载地址
  20. NUIST找工作小玩具

热门文章

  1. Win10+CUDA10.0.130+cudnn7.4.1+tensorflow1.13.1+anaconda3 5.2.0+GTX1060
  2. zabbix mysql安装配置_ZABBIX4.4 安装及配置
  3. python中set函数是什么数据类型_Python基本数据类型之set
  4. 比Redis快5倍的中间件,究竟为什么这么快?
  5. 阿里云MySQL及Redis灵异断连现象:安全组静默丢包解决方法
  6. 新增5大运维特性!华为云DAS服务高效运维有妙招
  7. 网络服务家族图谱:一张图带您了解华为云网络服务大家族!【华为云分享】
  8. 补习系列(14)-springboot redis 整合-数据读写
  9. AOS编排语言系列教程(六):创建共享云硬盘EVS
  10. 批量重命名文件和批量修改文件扩展名