変数とメソッド


1.変数(variable)


🔷 変数のタイプ


領域はクラス領域とメソッド領域に分けられ、変数を宣言する領域に基づいて変数のタイプを区別できます.
class Variables{
/* 클래스 영역 */
   int iv; // 인스턴스 변수 
   static int cv; // 클래스 변수(static변수)

   /* 메서드 영역 */
   void method(){
       int lv = 0; // 지역변수
   /* 메서드 영역 끝 */
   }
/* 클래스 영역 끝 */
}   

🔷 クラス変数とインスタンス変数


🔹 クラス変数


インスタンス変数の前にstaticを付けるだけです.
すべてのインスタンスは、共通のストレージスペースを共有します.
クラス内のすべてのインスタンスは、共通値のプロパティを保持する必要があります.
インスタンスを作成する必要はありません.クラス名.クラス変数
前にpublicを付けると、プログラム内のどこでも使用できるグローバル変数(global variable)の性質があります.
例)カードの大きさ(横、縦)

🔹 インスタンス変数


クラス領域で宣言し、インスタンスの作成時に作成します.
インスタンス変数に値を格納またはインポートするには、まずインスタンスを作成する必要があります.
例)カード上のパターン、数字
class Card{
	// 인스턴스 변수
    String kind;
    int number;
    // 클래스 변수
    static int width = 100;
    static int height = 200;
}

2.方法(method)


🔷 メソッドバー


...特定のタスクを実行する一連の文.
(1つの方法は、1つの機能のみを含むことが望ましい.)

🔷 使用方法の理由


🔹 1.高再利用性


一度に作成する方法は、複数回呼び出され、他のプログラムで使用できます.

🔹 2.重複コードの削除


🔸 コードを書くとき、同じコードを繰り返し書くことがありますが、これらのコードを一つの方法に組み合わせて使うと、コードの長さも短くなります.
🔸 また,後で修正を行うと,修正が必要なコードも減少し,修正によるエラーの可能性も低下する.

🔹 3.構造化


操作する際には,プログラムの構造を多様な方法で簡略化する必要がある.
1.設計時にコンテンツがない方法を作業単位として作成します.
2.制作の実現方法.

🔷 メソッドの構造


宣言(ヘッダ)とインプリメンテーション(ボディ)からなる.

🔹 宣言簿


「戻りタイプ」「メソッド名」「宣言パラメータ」
🔸 戻りタイプ:戻り値を書き込むタイプ.ない場合はvoidです.
🔸 メソッド名:メソッドの名前は動詞形式で記入する場合が多く,メソッドの機能を推定するために名前のみを用いることが望ましい.
🔸 ≪パラメータ|Parameters|oraolap≫:操作に必要な値を指定します.

🔹 実施部


中の内容はすべて実施部と呼ばれています.
戻りタイプがvoidでない限り、すべてのタイプに戻り文が必要です.
メソッドで宣言された変数は、このメソッドでのみ使用できます.(領域変数と呼ばれます.)
同じメソッドでは同じ変数名は使用できませんが、メソッドが異なる場合は、変数名が同じであっても同じ変数名を使用できます.
/* 선언부 */
int add(int a, int b){ 
/* 구현부 */
    int result = x + y; // 메서드 구현 
    return result; // 반환값

🔹 呼び出し


メソッドを使用するには、メソッドを定義してから呼び出す必要があります.
メソッド呼び出し時に、メソッドを定義する{}で実装されるコードが実行されます.
public static void main(String args[]){
    int result = add(3, 5);
   
    // add메서드
    int add(int a, int b){
    ...
    }
}
🔸 同じクラスのメソッドでは、参照変数を使用しないで呼び出すことができます.
ただし、静的メソッドは、同じクラスのインスタンスメソッドを呼び出して使用することはできません.
インスタンスオブジェクトを作成するかどうかは不明です.

🔷 パラメータ


メソッドを呼び出すと、パラメータで指定した値がコピーされて渡されます.
値がデフォルトの場合はコピーし、値が参照値の場合はインスタンスのアドレスをコピーします.
🔸 基本パラメータ:変数の値のみを読み込むことができます.
🔸 参照型パラメータ:変数の値を読み取り、変更できます.

🔹 きほんパラメータ

class Data{
    int x;
}
class PrimitiveParam{
    public static void main(String args[]){
        Data d = new Data;
        d.x = 10; // d.x = 10
        change(d.x); change(d.x) = 1000
        // 참조변수 없이 메서드를 사용한 이유 
        // 1. static메서드라서
        // 2. 같은 클래스라서
        System.out.println(d.x) // d.x = 10
    }
    static void change(int x){
        x = 1000;
}

🔹 参照型パラメータ

class Data {
    int x;
}
class ReferencesParam{
    public static void main(String args[]){
        Data d = new Data;
        d.x = 10; // d.x = 10
        change(d); // chagne(d.x) = 1000
        System.out.println(d.x) // d.x = 1000
    }
    static void change(Data d){
        d.x = 10000;
    }
}