java方法(函数)
1.方法
为什么要有方法
假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。
发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。
为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,
这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,
程序在需要发射炮弹时调用该方法即可。
public class MyDemo3 {
//主方法
public static void main(String[] args) {
//方法就是对一段功能逻辑的封装,以实现重复调用。
//方法的语法:1.方法要定义在类中,2.方法跟方法是平级关系,不能嵌套定义
//3.权限修饰符 状态修饰符 返回值类型 方法名(参数){ 封装的代码 }
//4.方法不调用,不执行。
//5.可以在主方法里面,通过方法名来调用我们自己定义的方法
//main 方法 是JVM自动调用的。
System.out.println("主方法调用了");
show();
show();
show();
show();
}
public static void show(){
//发射子弹
System.out.println("发射子弹");
}
}
什么是方法
方法就是完成特定功能的代码块
在很多语言中都有函数的定义,但是在咱们JAVA语言中,我们将其称之为方法。
方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2 ....){
方法体;
return 返回值;
}
方法的格式详细说明
(1): 修饰符 比较多,后面会详细介绍。目前使用 public static
(2): 返回值类型 用于限定返回值的数据类型
(3): 方法名 就是一个名称,它的存在是为了方便我们调用方法
(4): 参数类型 限定调用方法时传入参数的数据类型
(5): 参数名 是一个变量,接收调用方法时传入的参数
这个参数其实有一个专业的名词,被称之为形式参数,它的作用是用来接收实际参数的.
(6): 方法体 完成功能的代码
(7): return 结束方法以及返回方法指定类型的值
(8): 返回值 就是功能的结果,由return带回,带回给调用者
public class MyDemo1 {
//psvm 快速生成主方法
public static void main(String[] args) {
//快速生成输出语句
// ctrl+/ 单行注释
//ctrl+shift+/ 多行注释
double b=3.14;
System.out.println(b);
}
}
public class MyDemo2 {
public static void main(String[] args) {
//快速生成for循环 10.fori
for (int i = 0; i < 10; i++) {
}
}
}
方法求和
案例
需求:求两个数据之和的案例
如何写一个方法
两个明确
(1):返回值类型 明确功能结果的数据类型
(2):参数列表 要传递几个参数,以及每一个参数的数据类型
public class MyTest2 {
public static void main(String[] args) {
show();
//相加的方法
add();
int sum= add2();
System.out.println(sum);
int aa = 20;
}
//方法名一般就是小写,多个单词,第一个单词字母小写
//void 返回值类型,没有明确的返回值类型
public static void show(){
System.out.println("hehe");
return; //结束方法,方法的没有明确返回值类型,也就void 那么这个return 可以省略不写
}
public static void add(){
int num=1;
int num2=2;
System.out.println(num+num2);
}
//明确了返回值类型 为 int
//一旦一个方法,明确了返回值类型,那么必须在方法的最后,由return 带回一个与你明确了数据类型相一致的结果
public static int add2() {
int num = 1;
int num2 = 2;
//System.out.println(num + num2);
int sum=num+num2;
return sum; //return 结束方法,并返回结果
}
}
1.1方法调用
1.1.1方法调用(有明确返回值的调用)
a:单独调用,一般来说没有意义,所以不推荐。
b:赋值调用,推荐方案。
c:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。
案例演示:
需求:获取两个数中的较大值
package org.westos.demo3;
import java.util.Scanner;
public class MyTest1 {
public static void main(String[] args) {
/*
//alt+enter 可以自动补全
//ctrl+alt+V 自动补全
//ctrl+alt+L 自动排版代码,让代码排列整齐
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
int a = sc.nextInt();
System.out.println("请输入第二个整数");
int b = sc.nextInt();
int max = getMax(a, b);
System.out.println("最大值是:"+max);
}
public static int getMax(int aa,int bb){
int max = aa > bb ? aa : bb;
return max;
}
}
案例演示:
需求:比较两个数是否相等
使用键盘录入改进
import java.util.Scanner;
public class MyTest2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数");
int a = scanner.nextInt();
System.out.println("请输入第二个整数");
int b = scanner.nextInt();
boolean f = isEquals(a, b);
if (f) {
System.out.println("相等");
}else{
System.out.println("不相等");
}
}
public static boolean isEquals(int a,int b){
return a==b;
}
}
方法的注意事项
- 方法不调用不执行
- 方法与方法是平级关系,不能嵌套定义
- 方法定义的时候参数之间用逗号隔开
- 方法调用的时候不用在传递数据类型(实参:可以是常量,也可以是变量)
- 如果方法有明确的返回值,一定要由return带回一个值
案例演示输出星形
需求:根据键盘录入的行数和列数,在控制台输出星形
import java.util.Scanner;
public class MyTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数");
int hs = sc.nextInt();
System.out.println("请输入列数");
int ls = sc.nextInt();
//调用方法,打印图案
showStar(hs,ls);
}
public static void showStar(int hs,int ls){
for (int i = 1; i <=hs; i++) {
for (int j = 1; j <= ls; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
1.1.2方法调用:(没有明确返回值的调用)
单独调用
输出调用(错误)
赋值调用(错误)
案例演示:
需求:根据键盘录入的数据输出对应的乘法表
import java.util.Scanner;
public class MyTest2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数");
int hs = sc.nextInt();
showMultiplicationTable(hs);
}
public static void showMultiplicationTable(int hs){
for (int i = 1; i <= hs; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
1.2方法重载
案例演示:求和
- 2个整数
- 3个整数
- 4个整数
public class MyTest {
public static void main(String[] args) {
//求多个数相加
double sum=add(1,2.0);
int sum2 = add(1, 2, 3);
int sum3 = add(1, 2, 3, 4);
// 变量名.sout 快捷输出变量
System.out.println(sum);
System.out.println(sum2);
System.out.println(sum3);
}
//方法重载:允许一个类中可以定义多个同名方法,只要,他们的参数个数或参数的类型,不一样就可以。不能返回值类型来区分
public static int add(int a,int b){
System.out.println("两个int的调用了");
return a+b;
}
public static double add(int a, double b) {
System.out.println("一个int的一个double调用了");
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;
}
}
运行结果:
一个int的一个double调用了
3.0
6
10
概述
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同,与返回值无关,不拿返回值类型来区分。
参数列表不同:
- 参数个数不同
- 参数类型不同
public class MyTest2 {
public static void main(String[] args) {
//alt+enter 如果方法有返回值,可以自动补全,方法返回的结果
int sum = add();
System.out.println(sum);
//一个方法,如果有返回值,你可以输出调用,打印该方法返回的结果
System.out.println(add());
}
public static int add(){
return 100;
}
public static void add2() {
System.out.println("abc");
}
}
public class MyTest {
public static void main(String[] args) {
//alt+enter 万能神键 纠错键
//一旦一个方法上定义了形参,我们在调用时,必须根据形参的个数和形参的数据类型,传入与之对应的实参。
double sum= add(100,20);
System.out.println(sum);
int h=50;
int k=100;
double sum2=add(h,k);
System.out.println(sum2);
//以后我们在设计一个方法时,得考虑两点,1,这个方法要不要参数,要几个参数,参数的数据类型是什么。
//2.这个方法要不要设计返回值,返回值是什么。
}
//我们定义在方法括号里面的参数,我们称之为形式参数,简称形参,语法格式 数据类型 参数名 多个参数用逗号隔开
//形参的作用,就是用来接收调用方法时,传过来的实参
public static double add(int a,int b){
return a+b;
}
public static void show(){
}
public static byte getByte(byte a,byte b){
return 100;
}
public static void hehe(char ch,char b){
}
}
本文地址:https://blog.csdn.net/weixin_45122172/article/details/109586469