工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java-メソッド

Java メソッドは、操作を実行するためにグループ化されたステートメントのコレクションです。 System.out.println() を呼び出すとき たとえば、コンソールにメッセージを表示するために、システムは実際にいくつかのステートメントを実行します。

ここでは、戻り値の有無にかかわらず独自のメソッドを作成する方法、パラメーターの有無にかかわらずメソッドを呼び出す方法、およびプログラム設計にメソッドの抽象化を適用する方法を学習します。

作成方法

メソッドの構文を説明するために次の例を検討します-

構文

public static int methodName(int a, int b) {
   // body
}

ここで、

メソッド定義は、メソッド ヘッダーとメソッド本体で構成されます。同じことが次の構文に示されています-

構文

modifier returnType nameOfMethod (Parameter List) {
   // method body
}

上記の構文には、-

が含まれます。

上記で定義した min() というメソッドのソース コードを次に示します。 .このメソッドは、2 つのパラメーター num1 と num2 を取り、2 つの間の最大値を返します −

/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

メソッド呼び出し

メソッドを使用するには、メソッドを呼び出す必要があります。メソッドが呼び出される方法は 2 つあります。つまり、メソッドが値を返すか、何も返さない (戻り値なし)。

メソッド呼び出しのプロセスは簡単です。プログラムがメソッドを呼び出すと、プログラム制御は呼び出されたメソッドに転送されます。この呼び出されたメソッドは、次の 2 つの条件で呼び出し元に制御を返します。-

void を返すメソッドは、ステートメントの呼び出しと見なされます。例を考えてみましょう −

System.out.println("This is tutorialspoint.com!");

値を返すメソッドは、次の例で理解できます-

int result = sum(6, 9);

以下は、メソッドを定義する方法とそれを呼び出す方法を示す例です-

ライブデモ
public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

これにより、次の結果が生成されます-

出力

Minimum value = 6

void キーワード

void キーワードを使用すると、値を返さないメソッドを作成できます。ここで、次の例では、void メソッド methodRankPoints を検討しています。 .このメソッドは値を返さない void メソッドです。 void メソッドの呼び出しはステートメントでなければなりません。つまり、methodRankPoints(255.7); です。 .次の例に示すように、セミコロンで終わる Java ステートメントです。

ライブデモ
public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}

これにより、次の結果が生成されます-

出力

Rank:A1

パラメータを値で渡す

呼び出しプロセスの下で作業している間、引数が渡されます。これらは、メソッド仕様のそれぞれのパラメーターと同じ順序にする必要があります。パラメータは、値または参照によって渡すことができます。

パラメータを値で渡すとは、パラメータを使用してメソッドを呼び出すことを意味します。これにより、引数の値がパラメーターに渡されます。

次のプログラムは、パラメーターを値で渡す例を示しています。メソッド呼び出し後も、引数の値は変わりません。

ライブデモ
public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}

これにより、次の結果が生成されます-

出力

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

メソッドのオーバーロード

クラスに同じ名前でパラメーターが異なる 2 つ以上のメソッドがある場合、それはメソッドのオーバーロードとして知られています。オーバーライドとは異なります。オーバーライドでは、メソッドは同じメソッド名、型、パラメーターの数などを持ちます。

整数型の最小数を見つけるための前述の例を考えてみましょう。もし、double 型の最小数を見つけたいとしましょう。次に、オーバーロードの概念を導入して、同じ名前でパラメーターが異なる 2 つ以上のメソッドを作成します。

次の例は同じことを説明しています-

ライブデモ
public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

これにより、次の結果が生成されます-

出力

Minimum Value = 6
Minimum Value = 7.3

メソッドをオーバーロードすると、プログラムが読みやすくなります。ここでは、2 つのメソッドが同じ名前で指定されていますが、パラメーターは異なります。 integer 型と double 型の最小数が結果になります。

コマンドライン引数の使用

プログラムを実行するときに、プログラムに情報を渡したい場合があります。これは、コマンドライン引数を main( ) に渡すことによって実現されます。

コマンド ライン引数は、実行時にコマンド ラインでプログラム名の直後に続く情報です。 Java プログラム内のコマンドライン引数にアクセスするのは非常に簡単です。これらは、main( ) に渡される文字列配列に文字列として格納されます。

次のプログラムは、呼び出されたすべてのコマンドライン引数を表示します −

public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}

ここに示すように、このプログラムを実行してみてください −

$java CommandLine this is a command line 200 -100

これにより、次の結果が生成されます-

出力

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

このキーワード

これ インスタンスメソッドまたはコンストラクターで、現在のクラスのオブジェクトへの参照として使用される Java のキーワードです。 これを使う コンストラクター、変数、メソッドなどのクラスのメンバーを参照できます。

注意 − キーワード this インスタンスメソッドまたはコンストラクター内でのみ使用されます

一般に、キーワード this

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
}

this を使用した例を次に示します。 クラスのメンバーにアクセスするためのキーワード。次のプログラムをコピーして、This_Example.java という名前のファイルに貼り付けます。 .

ライブデモ
public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

これにより、次の結果が生成されます-

出力

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

変数引数(var-args)

JDK 1.5 では、同じ型の可変数の引数をメソッドに渡すことができます。メソッドのパラメーターは次のように宣言されます-

typeName... parameterName

メソッド宣言では、タイプの後に省略記号 (...) を指定します。メソッドで指定できる可変長パラメーターは 1 つだけであり、このパラメーターは最後のパラメーターでなければなりません。通常のパラメータはその前に置く必要があります。

ライブデモ
public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
	   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

これにより、次の結果が生成されます-

出力

The max value is 56.5
The max value is 3.0

finalize( ) メソッド

ガベージ コレクターによるオブジェクトの最終的な破棄の直前に呼び出されるメソッドを定義することができます。このメソッドは finalize( ) と呼ばれます 、オブジェクトが正常に終了することを保証するために使用できます。

たとえば、finalize( ) を使用して、そのオブジェクトが所有する開いているファイルを確実に閉じることができます。

クラスにファイナライザを追加するには、単純に finalize( ) メソッドを定義します。 Java ランタイムは、そのクラスのオブジェクトをリサイクルしようとするたびに、そのメソッドを呼び出します。

finalize( ) メソッド内で、オブジェクトが破棄される前に実行する必要があるアクションを指定します。

finalize( ) メソッドには、この一般的な形式があります −

protected void finalize( ) {
   // finalization code here
}

ここで、キーワード protected は、クラス外で定義されたコードによる finalize( ) へのアクセスを防止する指定子です。

これは、finalize( ) がいつ実行されるか、実行されるかどうかさえわからないことを意味します。たとえば、ガベージ コレクションが発生する前にプログラムが終了した場合、finalize( ) は実行されません。


Java

  1. Java オペレーター
  2. Java 抽象クラスと抽象メソッド
  3. Java アノテーション タイプ
  4. Java String charAt() メソッドと例
  5. 例を使用したJava文字列のendsWith()メソッド
  6. Java 文字列 replace()、replaceAll() および replaceFirst() メソッド
  7. Java 文字列 toLowercase() および toUpperCase() メソッド
  8. Java-オーバーライド
  9. Java 9 - コレクション ファクトリ メソッド
  10. Java 9 - プライベート インターフェイス メソッド
  11. Java 8 - メソッド参照