Java no memo

自分のためのJavaメモ。

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;とする。