10. Java 方法定义/形参/实参/返回值/语句块/方法重载
语句块
- 语句块(复合语句)是用花括号起的任意数量的简单 Java 语句。
- 块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。
- 块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。
- 语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义变量的作用域只限于语句块。
代码示例:语句块中定义变量
// 测试语句块
public class TestLan {
public static void main(String[] args) {
int n;
int a;
{
int k;
int n; // 编译错误:不能重复定义变量 n
} // 变量 k 的作用域到此为止
}
}
方法
- 方法是一段用于完成特定功能的代码片段,类似于其他语言的函数。
- 方法用于定义该类相关实例的行为特征和功能实现。方法是类和对象行为特征的抽象。方法类似于面向过程中的函数。
- 面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。
- 面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
方法声明格式:
[修饰符1 修饰符2 ……] 返回值类型 方法名(形式参数列表){
Java语句:… … …
}
方法调用方式:
对象名.方法名(实参列表)
方法的详细说明:
- 形式参数(定义方法时写的):在方法声明时用于接收外界传入的数据。
- 实参(调用方法时写的):调用方法时实际传给方法的数据。
- 返回值:方法在执行完毕后返还给调用它的环境的数据。
- 返回值类型:事先约定的返回值的数据类型。如无返回值,必须显示指定为 void。
代码示例:定义方法、调用方法
// 定义方法、调用方法
public class TestMethod {
public static void main(String[] args) {
// 定义方法对象
TestMethod tm = new TestMethod();
// 通过对象调用普通方法
tm.printSxt();
// 通过对象调用无返回值的参数方法
tm.add(30,40,50);
// 通过对象调用带有返回值的参数方法:计算数字
int c = tm.add1(10,20,30) + 100;
System.out.println("计算数字的结果:" + c);
}
// 加 void :代表打印时不需要去返回任何东西。并且定义方法时没有定义形参
void printSxt(){
System.out.println("打印了 Sxt");
System.out.println("阿jun还没对象。2021年11月1日。");
}
// 无返回值的参数方法
void add(int a,int b,int c){
int sum = a + b + c;
System.out.println("调用参数方法的计算结果:" + sum);
}
// 有返回值的参数方法。在参数方法前方定义返回值的数据类型。
int add1(int a,int b,int c){
int sum = a + b + c;
// 定义 add1 方法返回值
return sum; // return 作用:1.结束方法的运行 2.返回值
}
}
小知识
- return 作用:(1)结束方法的运行。(2)指定返回值(不会主动去打印返回值)。
- 实参的数目、数据类型和次序必须和调用的方法声明的形式参数列表匹配。
- Java 中进行方法调用传递参数时,遵循值传递的原则(传递的值都是数据的副本)(副本即会在调用方法给的实参值 copy 一份赋值给对应方法的形参)。
- 基本类型传递的是该数据值的 copy 值。
- 引用类型传递的是该对象引用的 copy 值,但指向的是同一个对象。
方法的重载(overload)
重载的方法,实际是完全不同的方法,只是名称不同而已。
雷区:方法重载
方法重载的构成条件:
- 不同的含义:形参类型、形参个数、形参顺序不同。
- 只有返回值不同不构成方法的重载。
形如:只有返回值不同
int a(String str)(){} 与 void a(String str)(){}
- 只有形参的名称不同,不构成方法的重载。
形如:只有形参名不同
int a(String str)(){} 与 int a(String s)(){}
代码示例:方法重载
// 测试方法重载
public class TestOverload {
public static void main(String[] args) {
// 重载不同的调用方法
System.out.println(add(3,5)); // 结果为 8
System.out.println(add(3,4,5)); // 结果为 12
System.out.println(add(3.05,5));// 结果为 8.05
System.out.println(add(3,5.05));// 结果为 8.05
// 常见的一些方法的重载
System.out.println(); // 0 个参数
System.out.println(1); // 参数是一个 int
System.out.println(2.0); // 参数是一个 double(因为 float 需要 f/F 去声明,所以是 double)
System.out.println("cc"); // 参数是一个字符串
}
// 求和的方法
public static int add(int n1,int n2){
int sum = n1 + n2;
return sum;
}
// 方法名相同,参数个数不同,构成重载
public static int add(int n1,int n2,int n3){
int sum = n1 + n2 + n3;
return sum;
}
// 方法名相同,参数数据类型不同,构成重载
public static double add(double n1,int n2){
double sum = n1 + n2;
return sum;
}
// 方法名相同,参数定义类型顺序不同,构成重载
public static double add(int n1,double n2){
double sum = n1 + n2;
return sum;
}
/**
* 方法名相同,相同类型参数位置顺序不同,不构成重载。
* 形如:int add(int n1,int n2){} 与 int add(int n2,int n1){}
* 只有返回值不同(即只有定义方法返回值数据类型不同),不构成方法的重载。
* 形如:int add(int n1,int n2){} 与 double add(int n1,int n2){}
*/
}
至此,Java 方法相关知识点结束。
偷偷向银河要了一把碎星✨只等你闭上眼睛撒入你的梦中。

浙公网安备 33010602011771号