【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

浙公网安备 33010602011771号