方法的定义
方法调用
设计方法的原则
使用场景
想象一下有个场景需要我们不断频繁地去使用某部分特定的代码,我们自然可以通过复制粘贴去完成,但是这样会导致代码又臭又长,大部分是重复的代码,这不利于我们后续的维护,如果能通过一种方式将这些代码封装起来,在每次使用的时候直接调用,就可以解决这个问题了,方法(或其它语言可能叫函数)就是为了解决这个问题而出现的。
如下是将打印三角形的代码封装成方法,在每次想打印三角形的时候,都可以直接调用定义好的打印三角形的方法。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要打印的三角形的行数:");
int row = scanner.nextInt();
// 在每次想要打印三角形时直接调用
printTriangle(row);
}
static void printTriangle(int row){
// 这个循环控制三角形的行数
for (int i = 1; i <= row; i++) {
// 这个循环控制每行空格的个数
for (int space = row - i; space > 0; space--) {
System.out.print(" ");
}
int stars = i * 2 - 1;
// 这个循环控制每行星号的个数
for (int j = 1; j <= stars; j++) {
System.out.print("*");
}
// 每个控制行数的循环结束一次,就打印一次换行
System.out.println();
}
}
扩展-Java的值传递
首先,Java的求值策略是值传递的,不是引用传递,这点要牢记。
在调用方法的时候,你传递的参数都会生成一个副本,随后将这个副本传递给方法,所以在方法内部只会影响到这个副本,而不会影响到你传递的实参的本体。
需要注意的是,上述并不绝对,在传递基本数据类型时,这个副本是值,而在传递引用数据类型时,这个副本是地址,是指向实参的本体的地址,所以你通过这个副本去修改的时候,改变的其实是实参的本体,这便影响到了实参。