class Point double x x double y y
クラス変数の宣言と利用の例 class Point { // 点クラス double x; // x座標 double y; // y座標 //クラス変数の定義と初期化(static修飾子の有無で出力結果を比較せよ) public static int count = 0; Point( double a, double b ){ コンストラクタ x = a; y = b; count++; } } class Sample. AP 0801 { public static void main(String[] args){ // インスタンスが生成される前からクラス変数は存在する! System. out. println("count=" + Point. count); count=0 Point p 1 = new Point(1. 0, 2. 0); System. out. println("count=" + p 1. count); Point p 2 = new Point(3. 0, 4. 0); count=1 System. out. println("count=" + p 2. count); count=2 } }
class Point { // 点クラス double x; // x座標 インスタンス変数 double y; // y座標 //クラス変数、クラスメソッドの定義 クラス変数 public static int count = 0; クラスメソッド public static void print. Value(){ System. out. println( "value: " + count ); } クラスメソッド public static void print. Value(int i){ System. out. println( "value: " + i ); } クラスメソッドの中からインスタンス変数で } あるx, yを参照することはできない! class Sample. AP 0802 { public static void main(String[] args){ // インスタンスが生成される前からクラス変数、クラスメソッドは存在する! Point. count = 5 ; value: 5 Point. print. Value(); Point. print. Value(6); value: 6 Point o = new Point(); o. print. Value(7); value: 7 } }
バッティングしても有効 ローカル変数 Sample. AP 0804. java class X { static int i = 100; クラス変数 int j = 200; インスタンス変数 void print. Value(){ System. out. println("i= System. out. println("j= int i = 123; ローカル変数 int j = 456; System. out. println("i= System. out. println("j= } } " + i ); " + j );
値を変更しない変数(定数)の宣言 final修飾子 class X { static final int MAX = 100; final static int MIN = -100; final int DEFAULT = 10; 値を変更しないのなら、インスタンスご とにこの定数のためにメモリを確保す } るのは無駄といえる→普通はクラス変 数にする(static) class Sample. AP 0805 { public static void main(String[] args){ System. out. println("value= " + X. MAX); System. out. println("value= " + X. MIN); X o = new X(); System. out. println( "value= " + o. DEFAULT); } }
- Slides: 16