Java语言的方法
实例
public class MethodTest01(){
public static void sum(int a,int b){
System.out.println(a+"+"+b+"="+(a+b));
//调用doSome方法
MethodTest.doSome();
}
//主方法
public static void main(String[] args){
//调用sum方法
MethodTest.sum(1,2);
}
public static void doSome(){
System.out.println("do some!");
}
}
以上代码了看出:方法的调用不一定在main方法当中。只要是程序可以执行到的位置,都可以调用其他的方法。
1、方法调用的时候实参和形参要求个数对应相同,数据类型对应相同。
类型不同的时候要求能够进行相应的自动类型转换
public class MethodTest02(){
//主方法
public static void main(String[] args){
MethodTest02.sum();//编译错误:参数数量不同
MethodTest02.sum(true,false);//编译错误:实参和形参的类型不是对应相同的
MethodTest02.sum(10L,20L);//编译通过
MethodTest02.sum(10,20);//编译通过:存在自动类型转换:int-->long
MethodTest02.sum(3.0,20);//编译错误:参数类型不是对应相同的
MethodTest02.sum((long)3.0,20);//编译通过
}
public static void sum(long a,long b){
System.out.println(a+"+"+b+"="+(a+b));
}
}
2、方法调用
1、方法的修饰符列表当中有static关键字,完整的调用方法是:类名 . 方法名(实参列表)
2、但是,有时候 “ 类名.” 可以省略,什么情况下可以省略呢?
- 对于方法的修饰符列表当中有static关键字的:“类名.” 可以省略不写。
- 调用同个类中的方法可省略不写
public class MethodTest03(){
public static void main(String[] args){
System.out.println("main begin");
m1();
System.out.println("main over");
}
public static void m1(){
System.out.println("m1 begin");
m2();
System.out.println("m2 over");
}
public static void m2(){
System.out.println("m2 begin");
m3();
System.out.println("m2 over");
}
public static void m3(){
System.out.println("m3 begin");
System.out.println("m3 over");
}
}
输出结果:
方法中的代码是自上而下的顺序依次执行的
方法的返回值类型不是void的时候
- 返回值类型不是void的时候:要求方法必须保证百分百的执行“return 值;”这样的语句来完成值的返回。没有这个语句编译器会报错。
- 一个方法有返回值的时候,当我们调用这个方法的时候,方法返回了一个值,对于调用者来说,这个返回值可以选择接收,也可以选择不接收。
public class MethodTest04(){
public static void main(String[] args){
//调用方法
divide(10,3);//这里没有接收这个方法的返回数据
//这里接收返回值
//采用变量接收
//变量的数据类型需要和返回值的数据类型相同,或者可以自动类型转换
int i = divide(10,3);
}
` /*
需求:
请定义并实现一个方法,该方法可以计算两个int类型数据的商,
要求将最终计算结果返回给调用者。
*/
//编译错误:缺少返回值
/*public static int divide(int a, int b){
return;
}
//编译错误:方法定义的时候要求返回一个int类型,此时返回布尔类型,类型不兼容
public static int divide(int a, int b){
return true;
}
//可以:但是具体方法体中编写的代码无法满足当前的需求
public static int divide(int a, int b){
return 1;
}
public static int divide(int a, int b){
int c=a/b;
return c;
}*/
public static int divide(int a, int b){
return a/b;
}
}
深入return语句
- 带有return关键字的java语句只要执行,所在的方法执行结束。
- 在“同一个作用域”当中,return语句下面不能编写任何代码,因为这些代码永远都执行不到,所以编译报错。
public class MethodTest05(){
public static void main(String[] args){
int reValue=m();
System.out,println(reValue);
}
//编译报错:缺少返回语句,以下程序编译器认为无法百分百保证“return 1;”会执行
/*public static int m(){
int a=10;
if(a>3){
return 1;
}
}
*/
public static int m(){
int a=10;
if(a>3){
return 1;
//这里不能编写代码,编译错误,因为无法执行访问的语句
//System.out.println("Hello");
}
//这里的代码可以执行
System.out.println("Hello");
return 0;
}
}
在返回值类型是void的方法当中使用“return;”语句。“return;”语句当中出现在返回值为void的方法当中主要是为了终止方法的执行。
return;直接终止方法;break只是终止循环。
return更强