Java基礎①
問1
// CheckNum.java public class CheckNum()[ static String className = "CheckNum"; Boolean isEven(int num){ if(num % 2 == 0){ return true; }else{ return false; } } } // Test.java public class Test{ public static void main(String[] args) { CheckNum cn = new CheckNum(); cn.className += "を実行する"; System.out.println(cn.className); System.out.println(cn.isEven(15)); // falseと表示 } }
1-1.classNameの値を変更できないようにするには? 1-2.インスタンスを作らず、isEvenを使うには?
問2
public class Test { public static void main(String[] args) { printS(); // ←A printV(); // ←B } public static void printS(){ System.out.println("S"); } public void printV(){ System.out.println("V"); } }
2-1.AかBどちらがエラーになるか? 2-2.エラーを解消するには?2パターン答えること。
問3
public class Test { static String firstName = "Mike"; String lastName = "Devis"; public static void main(String[] args) { System.out.println(firstName); // ←A System.out.println(lastName); // ←B } public void printName(){ System.out.println(firstName); // ←C System.out.println(lastName); // ←D } }
3-1.エラーがでるのはどこか? 3-2.エラーの解消法は?
public class Test { static String firstName = "Mike"; String lastName = "Devis"; public static void main(String[] args) { System.out.println(this.firstName); // ←A System.out.println(this.lastName); // ←B } public void printName(){ System.out.println(this.firstName); // ←C System.out.println(this.lastName); // ←D } }
3-3.エラーがでるのはどこか?(複数あり)
問4
// Player.java public class Player { static String name; public Player(String name){ Player.name = name; } } // Test.java public class Test { public static void main(String[] args) { Player p1 = new Player("Mike"); Player p2 = new Player("Cate"); System.out.println(p1.name + " " + p2.name); //←A } }
4-1.Aではなんと表示されるか?
問5
// Player.java public class Player { public String name; public Player(String name){ name = name; } } // Test.java public class Test { public static void main(String[] args) { Player p1 = new Player("Mike"); System.out.println(p1.name); //←A } }
5-1.Aではなんと表示されるか。
回答
1-1.static final String className (finalをつける。) 1-2.static Booloan isEven (staticをつけクラスメソッドにする。) クラスメソッドにすれば、CheckNum.isEven(15)で使える。 このまま使うならばnew CheckNum().isEven(15)
2-1.Bがエラーになる。(インスタンスメソッドだから。) 2-2.[1]メソッドにstaticを付けクラスメソッドにする。 もしくは[2]インスタンスを作って使う。new Test().printV();
3-1.Bでエラー。クラスメソッド内でインスタンス変数は呼べない。 ※インスタンス変数はインスタンスを作らないと呼べない。 3-2.Testのインスタンスを作って使う。new Test().lastName 3-3.AとBでエラー。クラスメソッドでthisは使えない。
4-1.Cate Cateと表示される。 nameがクラス変数なので、違うインスタンスでも上書きされる。 問題文はエラーにはならないがp1.nameとp2.nameに警告がでる。
5-1.null。 Playerコンストラクタでnameに値を入れるにはthis.name = name;とする。