DabaiはJavaソフトウェア包囲の13日目になりました(Javaメソッド呼び出し、呼び出しの実際のパラメータータイプ、メソッドの戻り値タイプは無効ではなく、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");
	}
}

出力結果:
出力結果

メソッド内のコードは上から下に順番に実行されます

メソッドの戻り値タイプが無効でない場合

  • 戻り値の型が無効でない場合:メソッドは、値の戻りを完了するために「returnvalue;」ステートメントが100%実行されることを確認する必要があります。このステートメントがないと、コンパイラーはエラーを報告します。
  • メソッドに戻り値がある場合、このメソッドを呼び出すと、メソッドは値を返します。呼び出し元の場合、戻り値は受信するか受信しないかを選択できます。
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はループを終了するだけです。
より強く戻る

おすすめ

転載: blog.csdn.net/qq2632246528/article/details/112756845
おすすめ