大白成为Java软件攻城狮的第十三天(java的方法调用、调用的实参与形参类型、方法返回值类型不是void、深入return语句)

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更强

猜你喜欢

转载自blog.csdn.net/qq2632246528/article/details/112756845