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はループを終了するだけです。
より強く戻る