方法
方法的概念
方法(Method)称为函数(Function)
方法:在程序中是一个可以完成某个共嫩红的独立代码片段
- 某个功能:只要可以实现的都是功能
- 独立代码段:方法是在{}实现的,不同的方法之间没有联系
方法的好处:可以将重复的代码取出来 ,方便我们仿佛使用
方法定义
-
定义格式
修饰词 返回值类型 方法名(参数列表){ 方法体,主体 return; }
- 修饰符:目前我们还有很多没有讲解,现在固定用法public static
- 返回值类型:本质是数据类型,方法是实现功能的代码,功能实现完毕后是应该有结果的,结果的数据类型
- 方法名:标识符 自定义,见名知意
- 方法体:写完成功能的代码
方法的练习
- 要求:使用放大技术,实现两个整数的求和
/**
* 修饰词 返回值类型 方法名(参数列表){
方法体,主体
return;
}
*我们自己定义方法,实现需求,实现两个整数求和
*2个分析
*功能计算后的结果是什么,还是整数
*功能计算中是否存在未知数据(两个整数)
*/
// 修饰词 返回值类型 方法名(参数列表
public static int sum(int a,int b) {
// 方法体:写完功能代码
return a+b;
}
方法的调用
什么是方法的调用:就是让我们写好的方法执行起来
如何调用:call name
import java.util.Scanner;
/**
* @author 15272
*
*/
public class FangFa01 {
public static void main(String[] args) {
//调用方法sum,明确方法中的未知数
int a= sum(5,6);
System.out.println(a);
}
/**
* 修饰词 返回值类型 方法名(参数列表){
方法体,主体
return;
}
*我们自己定义方法,实现需求,实现两个整数求和
*2个分析
*功能计算后的结果是什么,还是整数
*功能计算中是否存在未知数据(两个整数)
*/
// 修饰词 返回值类型 方法名(
public static int sum(int a,int b) {
// 方法体:写完功能代码
return a+b;
}
}
方法调用的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FknaHPcJ-1595594621443)(C:\Users\15272\Desktop\笔记\笔记照片\方法调用内存图.jpg)]
方法注意事项
- 方法不能定义在另一个方法内
- 方法定义没有先后顺序,不管写在哪都先执行main
- 方法定义的返回值必须和return返回的数据类型相同
- 调用方法传递参数也要一致
- 如果方法的定义上,返回值是void,但是却返回值了,这也是不对的
方法定义练习
- 实现任意数的乘法表
package zhangtaolianxi;
/**定义方法:实现任意整数的乘法表
* 分析:
* 返回值:功能实现后,结果数据类型,没有返回值(void)
* 方法参数:实现功能的未知数(整数)
*方法没有返回值,void方法里面不需要return
*/
public class FangFa02 {
public static void printChengFaBiao(int num) {
for (int i = 1; i <= num; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
public static void main(String[] args) {
printChengFaBiao(7);
}
}
-
实现任意数字的高斯算法
public static int getSum(int num) { int sum=0; for (int i = 1; i <=num; i++) { sum=sum+i; } return sum; } public static void main(String[] args) { int sum=getSum(100); System.out.println(sum); }
方法调用的总结
1,赋值调用
- 接受方法的反回结果
2.输出语句调用
- 直接将方法的调用写到输出语句中
3.直接调用,不输出结果
4.如果是void,不接收任何结果
方法的重载
方法的重载(overload):在同一个类中,允许方法的明智是相同的,只方法的参数列表不一致,这些方法就是重载现象.
方法的重载:
和修饰词返回值没关
参数列表不一致:
- 包含参数个数不同
- 参数数据类型不一样
- 参数顺序不一样
- 以上三个满足一个即可
方法重载练习
- 需求;方法定义实现乘法表
- 如果传递参数,就按照他的传递参数输出乘法表
- 用户不传递参数 ,输出99的.
package com.liujie;
/*
* 需求 :方法定义实现乘法
用户如果传递参数就按照他传递的参数输出乘法表
用户不传递参数,输出9*9的乘法表。
本案例存在的问题:代码出现重复(大量重复)
进行简化,不能有大量重复代码
方法:共性代码的抽取
* */
public class MethodDemo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
printChengFaBiao(5);
}
/*
* 写无参数的方法,实现输出99乘法表
* 上面的方法,是带有参数的方法,传递9,就是99乘法表
* 再本方法中,调用上面方法
* */
public static void printChengFaBiao(int num) {
for (int i = 1; i <=num;i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
public static void printChengFaBiao() {
// 实现一个乘法表的功能
// for (int i = 1; i <=9;i++) {
// for (int j = 1; j <= i; j++) {
// System.out.print(j+"*"+i+"="+j*i+"\t");
// }
// System.out.println();
// }
printChengFaBiao(9);
}
}
方法参数传递效果
方法的参数是基本类型
public class FangFa04 {
public static void main(String[] args) {
int a=1;
int b=2;
//调用chenge,传递实际参数
change(a, b);
System.out.println(a);
System.out.println(b);
}
/*
*
* 定义方法,传递2个整数值
* 不返回
*/
public static void change(int a,int b) {
a=a+b;
b=a+b;
}
}
方法的参数是引用类型
/*
* 方法参数问题
*/
public class FangFa05 {
public static void main(String[] args) {
int[]arr= {1,2,3};
System.out.println(arr[0]);
//调用change,传递数组,传递到方法参数的也是内存地址
change(arr);
System.out.println(arr[0]);
}
//change方法参数,写数组,方法参数接受收到的也是地址
public static void change(int [] arr) {
arr[0]=100;
}
}