目录
2、方法参数传递的案例 (打印数组、查询数组元素并返回、比较两个数组是否相等)
方法的概念:方法是一种语法结构,将一段代码封装成一个功能方便重复使用。
//main方法
public static void main(String[] args) {
//自定义方法
public static int add(int a,int b) {
int a = b +c
return c;
}
}
*方法的好处:提高代码重复使用性,提高代码逻辑性
一、方法的定义
1、方法完整的定义与调用格式写法
//完整格式
修饰符 返回值类型 方法名(形参列表){
方法体代码即需要执行功能的代码
return 返回值;
}
//调用方法
方法名(实参列表);
*方法修饰符暂时使用public static
*方法声明了具体返回类型,内部必须使用return来返回对应类型数据。
*形参列表可以有多个或者没有,如果有多个 那么多个形参都必须用英文逗号","隔开 并且不能给形参初始化值。
2、方法其他的定义与调用格式写法
2.1、无参数无返回值类型
//例如 其中viod表示无返回值的类型
public static void print() {
System.out.println("hello")
}
//调用 括号里无需传入参数
print()
* 如果 方法不需要返回结果,返回值类型必须申明成void(无返回值),此时就无法使用return返回参数。
*方法如果没有参数,或者返回值类型申明为void 可被称为无参数,依次类推。
*方法不需要参数,则形参可以不写。
3、方法使用的常见基本规则问题问题
3.1、方法编写顺序可以任意
3.2、方法与方法之间是平等关系 不是嵌套关系
3.3、方法返回值类型为void(无返回值),方法内则不能使用return返回,若返回值类型为其他具体类型,方法内则必须使用return返回类型数据。
3.4方法不调用就不会执行 调用时要严格对应方法的形实参数。
3.5 有返回值调用的情况下可以选择接收变量的结果 或者输出调用 或直接调用;无返回值只能调用一次。
//代码
public static int add(int a,int b) {
int a = b +c
return c;
}
//
//自定义调用
int i = add(a:100,b:200);
System.out.println(add(i);
//输出调用
System.out.println(add(a:100,b:200));
//直接调用
add(a:100,b:200)
4、方法使用案例(求和、判断奇偶数、数组求最值)
4.1、定义一个方法,方法中计算1-n的和并返回。
思路:a:因为n不固定,所以方法需要声明形参接收以及还要声明返回值类型。
b:方法内部使用for循环计算出1-n的和并返回
//使用main方法输出
public static void main(String[] args) {
System.out.println(add(5)); //参数给到5 运行结果为前5的数之和
}
public static int add(int n){
//定义存储;累加数值的变量
int sum = 0;
//使用循环实现累加
for (int i = 0; i <= n; i++) {
sum += i;
}
return sum;//返回sum的值
}
4.2、给一个数,输出该数是奇数还是整数
思路:a:传入数据给方法,方法需要声明形参接受。
b:方法内部使用if语句判断并输出。
//使用main方法输出
public static void main(String[] args) {
c(10);//调用输出判断10是偶数的结果
}
//if函数判断奇偶
public static void c(int n){
if(n %2 ==0){
System.out.println(n+"是偶数");
}
else {
System.out.println(n+"是奇数");
}
}
4.3找出数组的最值,使用方法,支持返回任意整型数组的最大值数据。
思路:a:要返回最大值,需要声明返回值类型。
b:接收数据,需要声明形参列表 找出数组最值并返回。
//使用main方法输出
public static void main(String[] args) {
int[] a = {11,20,19,15,21};
int max = getMax(a);
//输出
System.out.println("最大值数是"+max);
//System.out.println("最小值数是"+max);
}
//if函数判断奇偶
public static int getMax(int[] arr) {
//找出最大值并返回
int max = arr[0];
//遍历比较
for (int i = 1; i < arr.length; i++) {
if (i < max) { //如果输出最大值
//if (i < max) { 如果输出最小值
max = arr[i];
}
}
return max;
}
二、方法的内存原理
调用流程:
1、方法没有被调用的时候,在方法区中的字节码文件中存放
2、方法被调用的时候,需要进入到栈内存中运行
三、 方法参数传输机制
1.方法的参数传递
1.1基本类型的方法参数传递(值传递)
*直接传输数据值
//使用main方法输出
public static void main(String[] args) {
int a = 10;
c(a); //直接调用下面的c方法
System.out.println(a); //输出10
}
public static void c(int a){
System.out.println(a);//输出10
a = 20;
System.out.println(a);//输出20
}
//最后的执行结果:
//10
//20
//10
1.2.引用类型的方法参数传递(值传递)
*传输地址值
//使用main方法输出
public static void main(String[] args) {
int[] arr = {10,20,15};
c(arr); //直接引用
System.out.println(arr[0]); //因为引用类型传输的是数组的地址 所以被下面执行方法给改变了 值为520
}
public static void c(int[] arr){
System.out.println(arr[0]); //输出10
arr[0] = 520;
System.out.println(arr[0]); //输出20
}
//最终执行结果
//10
//520
//520
2、方法参数传递的案例 (打印数组、查询数组元素并返回、比较两个数组是否相等)
2.1 打印数组内容:
输出任意整型数组内容如:[11,22,33,44,55]
思路:a:定义一个方法接收数组 并输出
b: 定义一个静态初始化数组,调用并传入数组
//使用main方法输出
public static void main(String[] args) {
//定义第一个数组
int[] a1 = {10,20,15};
//c方法引用a1数组
c(a1);
System.out.println("------------------------");
//定义第二个数组
int[] a2 = {11,22,33};
//c方法引用a2数组
c(a2);
}
public static void c(int[] arr){
System.out.print("[");
//循环遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.print(i == arr.length - 1 ? arr[i]:arr[i] +", ");
}
System.out.println("]");
}
//最后执行结果:
//[10, 20, 15]
//------------------------
//[11, 22, 33]
2.2 查询数组元素并返回:
存在则返回该数在数组中的索引值 不存在则返回-1
思路:a:定义方法接收数组 查询元素的值(在方法中完成查询功能)
b:定义数组 调用方法 指定搜索元素值 并返回结果
//使用main方法输出
public static void main(String[] args) {
//定义数组调用方法
int[] arr = {11,22,33,44,55,66};
int index = c(arr,55); //输入查询参数55 判断55是否在数组中并返回索引值
System.out.println("查询数的索引是"+index);
}
//定义一个方法 参数用于接收数组,查询的数据返回值为整型
public static int c(int[] arr,int data){
//循环遍历 找出这个数的索引
for (int i = 0; i < arr.length; i++) {
if(arr[i] == data){
return i;
}
}
return -1; //查不到该元素
}
//运行结果:
//查询数的索引是4
2.3 比较两个数组是否相等 :
数组类型、元素个数、元素值、元素顺序 判断是否一样 一样返回true 不一样返回false
思路:a:定义方法接收两个整型数组
b:方法内部完成判断逻辑 返回布尔值
//使用main方法输出
public static void main(String[] args) {
//定义数组 调用方法
int[] arr1 = {1,2,3,4,5};
int[] arr2 = {1,2,3,4,5}; //两个数组相同则返回true
System.out.println(c(arr1, arr2));
}
//定义一个方法 参数用于接收两个数组,查询的数据返回值为布尔
public static boolean c (int[] arr1, int[] arr2){
//判断数组是不是相同
if (arr1.length == arr2.length){
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}else {
return false;
}
}
//最终运行结果:
//true
四、方法重载 与return关键字
1.方法重载定义
在同一个类中,出现了多个方法名称相同,但是形参列表不同就称为重载方法。
//例如:
public static void run() {
System.out.println("跑起来了");
}
public static void run(String a) {
System.out.println(a+"跑起来了");
}
//调用方法
public static void main(String[] args) {
run();
run("小狗");
}
//执行结果:
//跑起来了
//小狗跑起来了
2.方法重载的作用
*可读性好,名称与类型同一类功能 这是一种专业的代码设计
3.方法重载的识别技巧
只要是同类中 方法名称相同 形参列表不同 那么则就是重载方法。
形参不同是指个数 类型 顺序不同
4.return的使用
立即跳出并结束当前方法的执行,retur关键字可以放在任何方法中去使用
补充:break 跳出并结束当前循环
continue 结束当前所在循环的当次继续 进入下一次执行