第五讲 方法
方法也就是C语言中的函数
我们不可能一直在main函数中去写代码。
我们也讨论过,在java中,类体中方法外是无法直接写java语句的。只能是变量的定义以及定义时的直接赋值。
当前我们只知道有main函数。我们叫做主方法 main方法。
java中程序员可以自己定义方法。
方法的语法:
修饰符列表 返回值类型 方法名(参数列表) {
方法体;
}
public class MethodTest {
public static void main(String[] args) {
int res = sum(100, 200);
System.out.println(res);
}
public static void test() {
System.out.println("Test!");
}
public static int sum(int x, int y) {
int res = x + y;
return res;
}
}
// 当前情况下,我们都在方法前加上 public static
// 其他的与你们在C语言中学的一样的
// 关于 return
// return这个东西在执行的时候,一旦遇到就会结束方法,
// 如果执行了return语句之后,后面还有java语句,这些java语句是不可能被执行的。
// 我在 main方法中和sum方法为中都定义了int型的res 它们会冲突吗? 不会
// 为什么呢?因为不在一个作用域中。
// 为什么呢?方法结束,内存释放。
// 怎样释放的呢?这个后面我们会详细介绍。
// 变量的作用域。当我们看到{}的时候,这个一般就是一个作用域。
// 嵌套得越深的{}作用域级别一般来说就低。
// 方法中所涉及到的变量都叫做局部变量。方法的形参、方法内部定义的变量。
// for循环、while循环中定义的变量,作用域只在循环内,循环结束,该变量就不存在了。
public class MethodTest {
static int k = 100;
static int j = 200;
public static void main(String[] args) {
int res = sum(k, j);
System.out.println(res);
//System.out.println(sum(k, j));// 这样也可以
System.out.println(x);// 这样也不行,x只在sum方法中存在。出了方法就释放
}
public static void test() {
System.out.println("Test!");
}
public static int sum(int x, int y) {
for (int i = 0; i < 10 ; i++ ) {
int s = 0;
s++;
// 只要出了循环,i就被释放了,再也找不到了。编译报错。
}
int res = x + y;
System.out.println(i + "," + s);// 这个i能不能被打印出来
/*
MethodTest.java:17: 错误: 找不到符号
System.out.println(i);// 这个i能不能被打印出来
^
符号: 变量 i
*/
return res;
}
}