【Java入门】方法(函数)

方法

方法是一段可以重复调用的代码。有些地方将方法称为函数,本身没有什么区别,只是称呼不一样。

定义

声明一个方法的具体语法格式

/*
【修饰符】 【返回值类型】 【方法名】(【参数类型1】 【参数名1】,【参数类型2】 【参数名2】,……)
{
    执行语句
    ……
    return 返回值;
}
*/

int add(int num1,int num2)
{
    int value = num1 + num2;
    return value;
}
  • 修饰符 有访问权限修饰符,还有其他的修饰符 后面详细介绍
  • 返回值类型 用于限定方法返回值的类型 没有返回值用void(空类型)代替
  • 参数类型 限定调用方法时传入的参数的数据类型
  • 参数名 是一个变量,用于接收调用方法时传入的数据
  • return关键字 用于结束方法以及返回与返回值类型相同的值 没有返回值则不写
  • 返回值 被return语句返回的值 该值会返回给调用者

参数传递

形式参数:定义方法时参数列表的变量为形式参数,简称形参

形参只在被调用时才会分配内存,形参只在方法内部有效

实际参数:调用方法时传递的参数为实际参数,简称实参

实参可以是变量、表达式、常量和方法

package com.qlnu.juston;

public class Test {
	public static void main(String[] args) {
		// 调用方法 方法名(实参);
		// 调用方法时填写的参数为实际参数 简称实参 必须与形参的类型、个数相同
		// 返回值在方法执行完毕后被带回 可以用变量接受 也可以参与表达式的计算
		int num = add(1, 2);
		System.out.println(num);
	}

	// 定义方法时的参数为形式参数 简称形参
	// 形参只在定义时被分配内存 仅在方法内部有效
	static int add(int num1, int num2) {
		return num1 + num2;
	}
}

传值调用

在方法调用时,实际参数复制一个副本赋值给形式参数,在方法内修改形参并不会影响实参

传值调用

在方法调用时,实际参数复制引用赋值给形式参数,在方法内修改形参会同步到实参,因为直接操作的引用

当形参是基础数据类型时是传值调用,当形参是引用类型时是传址调用

package com.qlnu.juston;

public class Test {
	public static void main(String[] args) {
		int num = 13;
        //除了八大基础数据类型 其他的都是引用类型 
        //不能用String类型 因为String修改后会生成一个新对象 也就是新引用
		StringBuffer str = new StringBuffer("abc");

		add(13);
		System.out.format("main方法 num = %d\n", num);

		change(str);
		System.out.format("main方法 str = {%s}\n", str);

	}

	// 传值调用
	public static void add(int num1) {
		num1 += 10;
		System.out.format("add方法 num = %d\n", num1);
	}

	// 传址调用 形参实参之间的传递 针对引用类型是传址调用
	public static void change(StringBuffer str) {
		str.append("123");//在字符串后追加字符123
		System.out.format("change方法 str = {%s}\n", str);
	}
}

/* 输出
add方法 num = 23
main方法 num = 13
change方法 str = {abc123}
main方法 str = {abc123}
*/

方法的重载

有时同一个方法,可能针对不同的情况需要不同类型、个数的形参与不同的返回值类型。

例如针对整数之间的求和方法 int add(int num1,int num2)需要两个int类型的参数与int类型的返回值,另一种情况是针对浮点类型的求和方法 double add(double num1, double num2)需要两个double类型的参数与double类型的返回值。实际上他们实现的功能是相同的,只是应对了不同的情况,这就叫方法的重载。

package com.qlnu.juston;

public class Test {
	public static void main(String[] args) {
		System.out.format("value = %d\n", add(1, 2));
		System.out.format("value = %f", add(1.2, 2.3));
	}

    //针对整形
	static int add(int num1, int num2) {
		return num1 + num2;
	}

    //整形浮点型
    //重载了方法add
	static double add(double num1, double num2) {
		return num1 + num2;
	}
}

ByJuston

posted @ 2020-02-10 17:41  JustonTao  阅读(144)  评论(0)    收藏  举报