方法

9.1方法概述

方法就是用来完成解决某件事情或实现某个功能的办法

可以通过在程序代码中引用方法名称和所需的参数,实现在该程序中执行(或称调用)该方法。方法,一般都有一个返回值,用来作为事情的处理结果。

9.2方法的语法格式

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

执行语句

………

return 返回值;

}

l  修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍public

l  返回值类型:用于限定方法返回值的数据类型void

l  参数类型:用于限定调用方法时传入参数的数据类型

l  参数名:是一个变量,用于接收调用方法时传入的数据

l  return关键字:用于结束方法以及返回方法指定类型的值

l  返回值:被return语句返回的值,该值会返回给调用者

public class MethodDemo01 {

public static void main(String[] args) {

int area = getArea(3, 5); // 调用 getArea方法

System.out.println(" The area is " + area);

}

// 下面定义了一个求矩形面积的方法,接收两个参数,其中x为高,y为宽

public static int getArea(int x, int y) {

int temp = x * y; // 使用变量temp记住运算结果

return temp; // 将变量temp的值返回

}

}

运行结果:

9.3方法的重载

Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数或者顺序必须不同,这就是方法的重载。

public class MethodDemo02 {

public static void main(String[] args) {

// 下面是针对求和方法的调用

int sum1 = add01(1, 2);

int sum2 = add02(1, 2, 3);

double sum3 = add03(1.2, 2.3);

// 下面的代码是打印求和的结果

System.out.println("sum1=" + sum1);

System.out.println("sum2=" + sum2);

System.out.println("sum3=" + sum3);

}

// 下面的方法实现了两个整数相加

public static int add01(int x, int y) {

return x + y;

}

// 下面的方法实现了三个整数相加

public static int add02(int x, int y, int z) {

return x + y + z;

}

// 下面的方法实现了两个小数相加

public static double add03(double x, double y) {

return x + y;

}

}

运行结果:

解释:

在main()方法中调用add()方法时,通过传入不同的参数便可以确定调用哪个重载的方法,如add(1,2)调用的是两个整数求和的方法。值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。

9.4重载的注意事项

l  重载方法参数必须不同:

参数个数不同,如method(int x)与method(int x,int y)不同

参数类型不同,如method(int x)与method(double x)不同g

参数顺序不同,如method(int x,double y)与method(double x,int y)不同

l  重载只与方法名与参数类型相关与返回值无关

如void method(int x)与int method(int y)不是方法重载,不能同时存在

l  重载与具体的变量标识符无关

如method(int x)与method(int y)不是方法重载,不能同时存在

9.5参数传递

参数传递可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递

public class ArgumentsDemo01 {

public static void main(String[] args) {

int a=5;

int b=10;

change(a, b);//调用方法时,传入的数值称为实际参数

System.out.println("a=" + a);

System.out.println("b=" + b);

}

public static void change(int a, int b){//方法中指定的多个参数称为形式参数

a=200;

b=500;

}

}

运行结果:

运行过程:

public class ArgumentsDemo02 {

public static void main(String[] args) {

int[] arr = { 1, 2, 3 };

change(arr);// 调用方法时,传入的数值称为实际参数

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

public static void change(int[] arr) {// 方法中指定的多个参数称为形式参数

for (int i = 0; i < arr.length; i++) {

arr[i] *= 2;

}

}

}

运行结果:

运行过程:

l  当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响

l  当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响

Java基础方法整理的更多相关文章

  1. Java基础-方法(method)的应用

    Java基础-方法(method)的应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 方法就是定义在类中,具有特定功能的一段小程序,方法也称为函数(function),方法可以接 ...

  2. Java基础 随笔整理

    Java基础随笔整理 为了方便阅读,特整理了相关的学习笔记 Java感想 操千曲而后晓声 Java入门 Java其他 Java虚拟机详解 语言入门百题 Java开发工具 · Eclipse Java语 ...

  3. Java基础——方法的调用

    Java基础--方法的调用     总结: 1. 在同一个类中-- 对于静态方法,其他的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...

  4. 《Java基础——方法的调用》

    Java基础--方法的调用     总结: 1. 在同一个类中-- 对于静态方法,其它的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...

  5. Java基础进阶整理

    Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...

  6. java基础概念整理综合 及补充(jdk1.8)

    2018 java基础 笔记回顾摘要 一 1,html 与 注释: <!--   -->  注释不能嵌套 代码都得有注释. 2,空格符:   3,css选择的优先级: id选择器 > ...

  7. java基础知识整理

    java基础入门知识(转载请注明出处.) 1.JVM.JRE和JDK的区别. (1)JVM(Java Virtual Machine):java虚拟机,用于保证java跨平台的特性,java语言是跨平 ...

  8. JAVA基础--重新整理(1)后版

    比较喜欢用demo来讲解. 变量: public static void main(String[] args) { int age;//变量声明 age = 16;//变量的初始化,第一次赋值 ag ...

  9. Java基础-方法重载和方法重写的区别

    什么是java方法重载 (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2)  ...

随机推荐

  1. 数据库管理 trove openstack

    Trove是数据库即服务的OpenStack.它旨在完全基于OpenStack运行,其目标是允许用户快速轻松地利用关系数据库的功能,而无需处理复杂的管理任务.云用户和数据库管理员可以根据需要配置和管理 ...

  2. AtCoder Regular Contest 102 E Stop. Otherwise...

    题目链接:atcoder 大意:有\(n\)个骰子,每个骰子上面有\(k\)个数,分别是\(1\text ~ k\),现在求\(\forall i\in[2...2k]\),求出有多少种骰子点数的组合 ...

  3. 【BZOJ1211】【HNOI2004】树的计数 prufer序列

    题目描述 给你\(n\)和\(n\)个点的度数,问你有多少个满足度数要求的生成树. 无解输出\(0\).保证答案不超过\({10}^{17}\). \(n\leq 150\) 题解 考虑prufer序 ...

  4. IDEA中Git分支未push的变更集如何合并到另一个分支

    使用rebase命令 刚开始,A分支和B分支的代码是一样的,把A分支checkout 为当前分支,并且修改了代码,进行[commit]和[push],commit成功了,但是push没有权限. 这个时 ...

  5. 【Gym - 100812G 】Short Path (SPFA)

    BUPT2017 wintertraining(15) #7B 题意 n个点m条无向有权边(2 ≤ n ≤ 10^5, 1 ≤ m ≤ 10^5),每个点标记了0或1,求所有1中,最近的两个1的下标及 ...

  6. Codeforces 700 C. Break Up(Tarjan求桥)

    题意 给你一个有 \(n\) 个点, \(m\) 条边的无向图,每条有边权 \(w_i\) ,现在要选择至多两条边断开,使得 \(S, T\) 不连通,并且使得边权和尽量小. \(n \le 1000 ...

  7. 【BZOJ3252】攻略(长链剖分,贪心)

    [BZOJ3252]攻略(长链剖分,贪心) 题面 BZOJ 给定一棵树,每个点有点权,选定\(k\)个叶子,满足根到\(k\)个叶子的所有路径所覆盖的点权和最大. 题解 一个假装是对的贪心: 每次选择 ...

  8. 【BZOJ5322】[JXOI2018]排序问题(模拟)

    [BZOJ5322][JXOI2018]排序问题(模拟) 题面 BZOJ 洛谷 题解 这题就显得很呆. 显然就是每次找到\([l,r]\)中出现次数最小的那个数并且放一个. 然后随便模拟一下就好了Qw ...

  9. 使用unittest单元测试框架对加法做单元测试

    import unittest from parameterized import parameterized def cacl(a, b): return a+b class MyCacl(unit ...

  10. bzoj3796(后缀数组)(SA四连)

    bzoj3796Mushroom追妹纸 题目描述 Mushroom最近看上了一个漂亮妹纸.他选择一种非常经典的手段来表达自己的心意——写情书.考虑到自己的表达能力,Mushroom决定不手写情书.他从 ...