JavaSE从入门到放弃.方法
方法
方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。
public class MethodDemo {
public static void main(String[] args) {
int rs = sum(10, 20);
System.out.println("和是:" + rs);
int rs2 = sum(30, 20);
System.out.println("和是:" + rs2);
}
public static int sum(int a, int b) {
int c = a + b;
return c;
}
}
定义方法的注意事项
- 方法的修饰符:暂时都使用public static 修饰。
- 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
- 形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。
使用方法的好处
- 提高了代码的复用性,提高了开发效率。
- 让程序的逻辑更清晰。
方法的其他形式
设计一个合理的方法的原则如下:
- 如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明), 此时方法内部不可以使用return返回数据。
- 方法如果不需要接收外部传递进来的数据,则不需要定义形参,且调用方法时也不可以传数据给方法。
- 没有参数,且没有返回值类型(void)的方法,称为值无参数、无返回值方法。此时调用方法时不能传递数据给方法。
方法使用常见问题
- 方法在内种没有先后顺序,但是不能把一个方法定义在另一个方法中。
- 方法的返回值类型写void(无返回申明)时,方法内不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
- return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。
- 方法不调用就不会执行,调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
调用有返回值的方法,有3种方式:
- 可以定义变量接收结果
- 或者直接输出调用
- 甚至直接调用
- 调用无返回值的方法,只有1种方式: 只能直接调用。
方法在计算机中的执行原理
我们知道Java程序的运行,都是在内存中执行的,而内存区域又分为栈、堆和方法区。那Java的方法是在哪个内存区域中执行呢?
答案是栈内存。 每次调用方法,方法都会进栈执行;执行完后,又会弹栈出去。
假设在main方法中依次调用A方法、B方法、C方法,在内存中的执行流程如下:
- 每次调用方法,方法都会从栈顶压栈执行没执行
- 每个方法执行完后,会从栈顶弹栈出去
方法参数的传递机制
Java的参数传递机制都是:值传递
所谓值传递:指的是在传递实参给方法的形参的时候,传递的是实参变量中存储的值的副本。
参数传递的基本类型数据
Java的参数传递机制都是:值传递,传递的是实参存储的值的副本。
基本类型和引用类型的参数在传递的时候有什么不同?
- 都是值传递
- 基本类型的参数传递存储的数据值
- 引用类型的参数传递存储的地址值
方法重载
所谓方法重载指的是:一个类中,出现多个相同的方法名,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。
public class MethodOverLoadDemo {
public static void main(String[] args) {
test();
test(100);
}
public static void test() {
System.out.println("===test1===");
}
public static void test(int a) {
System.out.println("===test2===" + a);
}
void test(double a) {
}
void test(double a, int b) {
}
void test(int b, double a) {
}
int test(int a, int b) {
return a + b;
}
}
return单独使用
在方法中单独使用return语句,可以用来提前结束方法的执行。
public class Test {
public static void main(String[] args) {
System.out.println("开始");
chu(10, 0);
System.out.println("结束");
}
public static void chu(int a, int b) {
if (b == 0) {
System.err.println("参数异常");
return; // 直接跳出并结束当前chu方法的执行
}
int c = a / b;
System.out.println("除法结果是:" + c);
}
}
Comments | NOTHING
该文章已经关闭评论