CodeGym /Java Blog /ランダム /Javaメソッド
John Squirrels
レベル 41
San Francisco

Javaメソッド

ランダム グループに公開済み
Java の変数と定数は値を格納しますが、メソッドには特定のアクションを実行する一連の演算子が含まれます。つまり、Java のメソッドはオブジェクトの動作を決定し、いくつかの変数に対してアクションを実行します。アクションを実行できるだけでなく、特定の結果を生み出すこともできます。

Javaのメソッドとは何ですか?

メソッドはオブジェクトの動作を定義し、プログラム内で何らかの操作を実行できるようにする一連のコマンドです。他のプログラミング言語では、メソッドは「関数」と呼ばれることがよくありますが、それは当然のことです。実際、メソッドは数学的な意味での関数です。通常、メソッドの入力には何か (いくつかの変数) が提供され、これらの変数は一連のコマンドによって処理され、メソッドは結果を生成します。おそらく、少なくともpublic static void main(String[] args)のメソッドにはすでに出会っているでしょう。通常、このメソッドは Java プログラムの実行を開始します。

Javaでメソッドを宣言するにはどうすればよいですか?

Java のすべてのメソッドはクラス内に作成されます。それらは次のように宣言されます。
accessSpecifier ReturnType name (parameter list) {
//method body
}
例えば:
public int addTwoNumbers (int a, int b){

//method body
return}
publicはアクセス指定子、 intメソッドが返す変数の型、addTwoNumbersはメソッドの名前、abはメソッドのパラメーターです。もう少し詳しく見てみましょう。 アクセス指定子は、メソッドのアクセス タイプを定義するために使用されます。それらは次のようになります。
  • public : どのクラスからもメソッドにアクセスできます。

  • private : 定義されたクラス内でアクセスが可能です。

  • protected : アクセスは、パッケージ内または別のパッケージ内の他のサブクラス内でのみ使用できます。

  • default : 宣言されているパッケージからアクセスできます。この場合、「デフォルト」という言葉は書かれていません。

戻り値の型は、このメソッドが返す型を定義します。上記の例では、戻り値の型はintです。メソッドが何も返さない場合、戻り値の型は void です。
public void printSomething (String myString) {}
メソッド名はメソッドの一意の名前です。この記事の後半では、Java の命名規則について説明します。上記のメソッドの名前はaddTwoNumbersprintSomethingです。 パラメータ リストは、メソッドが受け取る引数 (データ型と変数名) のリストです。上記の最初の例では、「int a, int b」がパラメータであり、2 番目の例では、String myStringが引数です。メソッドでパラメータを使用しない場合は、このフィールドを空白のままにすることもできます。

メソッドパラメータの例

public void printSomething (String myParameter1, int myParameter2) {}
ここには、 myParameter1myParameter2 という 2 つの変数があります。これらはメソッドのパラメータです。は、メソッドが実行する中括弧で囲まれた一連の命令です。メソッドの戻り値の型が void でない場合は、メソッド本体にreturnキーワードが存在する必要があります。returnの後には、このメソッドが返す引数が続きます。したがって、メソッドを作成するには、その名前を括弧とともに指定する必要があります。必要に応じて、メソッドが操作する変数を括弧内に指定します。メソッド名の前にはアクセス指定子とメソッドが返す変数の型があり、メソッドが何も返さない場合は void です。中括弧内に、実際のメソッド、つまりメソッドの引数で最もよく機能する一連の命令を記述します。以下は、配列内の最大の数値を見つけてそれを返すメソッドの例です。
public int findBiggest(int[] numbers) {
   int max;
   max = numbers[0];
   for (int i = 1; i < numbers.length; i++) {
       if (max < numbers[i]) {
           max = numbers[i];
       }
   }
   return max;
}

メソッドに名前を付けるにはどうすればよいですか?

メソッドの命名に関する厳密なルールはありませんが、Java で専門的に開発する予定がある場合は従う必要があるガイドラインがあります。メソッド名は動詞であることが非常に多く、大文字と小文字を混合して書かれ、小文字で始まり、後続の各単語には大文字が使用されます (キャメルケース)。ここではいくつかの例を示します。
int addTwoNumbers (int a, int b)
void run()

メソッドの呼び出し方法

メソッドを呼び出すには、その名前を記述し、宣言時に対応する変数を設定するだけで十分です。mainメソッドでfindBiggestメソッドを呼び出してみましょう。
public static void main(String[] args) {
  int[] array = new int[] {5, 7, -2, 6, 7, 1};
  int max = findBiggest(array);
   System.out.println("the biggest number in array is: " + max);
  }
このプログラムの出力は次のとおりです。
配列内の最大の数は次のとおりです: 7

Java のさまざまな種類のメソッド

Java では、すべてがオブジェクトで構成されており、オブジェクトの動作はメソッドによって定義されます。従来、Java には事前定義されたメソッドとユーザー定義のメソッドがあると言えます。事前定義メソッドは、Java 言語自体の一部であるクラスに含まれるメソッドです。

事前定義されたメソッド

事前定義または標準ライブラリのメソッドは Java に組み込まれています。もちろん、すべてのプログラマーがこれらを使用したり、プログラム用にローカルで変更したりすることもできます。Java クラス ライブラリは、Java 仮想マシン (JVM) および Java ランタイム環境とともに Java アーカイブ ファイル (*jar など) 内にあります。これらは、たとえば、min()max()、またはabs()などのMathクラスのメソッドです。またはconcat()のような文字列操作メソッド。mainメソッドを持つクラスを作成し、いくつかの標準ライブラリ メソッドを呼び出してみましょう。
import static java.lang.Math.max;

public class Test {

    public static void main(String[] args) {
       int a = 5;
       int b = 7;
       int max = max(a,b);
       System.out.println(max);
       String str1 = "I am ";
       String str2 = "here ";
       String str3 = str1.concat(str2);
       System.out.println(str3);


   }

}
Mathクラス のメソッドを使用するには、プログラムの先頭で Math クラスをインポートする必要があることに注意してください。これが行われていない場合は、メソッド名の前にクラス名をドットで区切って書くことができます。
int max = Math.max(a,b);

ユーザー定義のメソッド

これらのメソッドは、プロジェクトの要件に合わせてプログラマーによって作成されます。実際には、上記でユーザー定義のfindBiggest()メソッドをすでに作成しています。統合するために、何も返さず、パラメーターも持たないが、入力された名前に応答して挨拶する (つまり、コンソールに出力する) 別のメソッドを作成しましょう。
import java.util.Scanner;

public class Test {

   public void repeater() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}

Java での静的メソッドの作成

一般に、Java のメソッドはオブジェクトのメソッドです。メソッドを呼び出すには、このメソッドが定義されているクラスのインスタンスを作成する必要があります。ただし、静的メソッドもあります。これらは、オブジェクトではなくクラスに関連付けられているという点で通常のものとは異なります。静的メソッドの重要な特性は、静的変数/メソッドのみにアクセスできることです。これらはstaticキーワードを使用して定義されます。したがって、Mathクラスでは、変数を操作するすべてのメソッドが静的です。Mathクラスに似たものを作成し、その中に含まれるクラスのインスタンスを作成せずに使用できるいくつかの静的メソッドを収集できます。それをNumbersと呼びましょう。
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;


public class Numbers {


   public static int findMax(int left, int right) {
       return (left < right) ? right : left;

   }


   public static boolean isNegative(int number) {
       return number < 0;
   }

   public static long power(long number, int deg) {

       if (deg == 0) {
           number = 1;
           return number;
       } else {
           number = power(number, deg - 1) * number;
           return number;
       }
   }

   public static long abs(long number) {
       return number > 0 ? number : -number;
     }


    public static void main(String[] args) {

       int a = 5;
       int b = 7;
       long c = -7;
       long abs = abs(c);
       System.out.println(abs);
       System.out.println(findMax(a,b));

   }

}
プログラムの出力は次のとおりです。
7 7
まず、数値の絶対値を検索するメソッドが呼び出され、次に 2 つの数値のうち大きい方を検索するメソッドが呼び出されます。どちらのメソッドも静的として定義されているため、これらのメソッドを呼び出すために Numbersクラスのインスタンスを作成する必要はありません。

Java コードでのインスタンス メソッドの適用

インスタンス メソッドまたは通常のメソッドは、メソッドが定義されているクラスのインスタンスで呼び出すことができます。
public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
talk()メソッド を呼び出すには、 Catクラスのインスタンスを作成する必要があります。
public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();

   }
}
このプログラムの出力は次のとおりです。
ニャーニャー

Javaの抽象メソッド

Java の抽象メソッドは、実装のないメソッドです。つまり、宣言時にコードは含まれません。これらは抽象クラスでのみ宣言でき、非抽象クラスで実装できます。1 つの抽象メソッドmyMethodAdd()を持つ抽象クラスを作成しましょう。
abstract class DemoAbs {
   abstract void myMethodAdd();
}
次に、この抽象クラスDemoAbsのクラス を作成しましょう。ここでは、必ずmyMethodAdd()メソッドを実装する必要があります。
public class myClass extends DemoAbs {

   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

メソッド呼び出しのメモリ割り当て

これはかなり複雑なトピックであり、より慎重な分析が必要です。ここでは、このトピックを表面的に理解するために、最も基本的なことだけを説明します。JVM メモリはヒープ領域とスタック領域で構成されます。ヒープは、Java オブジェクトを格納するメモリ領域です。スタック メモリは、プリミティブ変数とメソッド オブジェクトへの参照を格納するメモリの一時領域です。スタック メモリには、メソッドに依存する短期間の値が含まれています。このタイプのメモリは、後入れ先出し (LIFO) 原理に基づいています。メソッドを呼び出すと、スタック メモリは新しいブロックを作成します。ローカルのプリミティブ値が含まれています。メソッドを終了すると、スタック メモリに作成されたブロックが解放されます。

結論

この記事では、Java 言語でメソッドを作成する基本と、Java にあるメソッドとその操作方法について説明しました。メソッドがクラスの動作を決定することを学びました。メソッドがなければ、オブジェクトが相互に対話することは不可能になります。 学んだことをさらに強化するには、Java コースのビデオ レッスンを視聴することをお勧めします。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION