独習Java勉強中 no.1

オブジェクトの等価性がよくわかんないような?

オブジェクトは確実に二つ存在しているんだからコンストラクタは2回呼び出されるのかと思ったのに、そんなことはないのかな?
つまりオブジェクトはコピーすれば、コンストラクタを呼び出す必要はないと?

(そういえば、ずっと前に『C++のからくり』っていう本の中に「コピーコピーコンストラクタ」っていう章があった気がする。)

// Counter.java
public class Counter {
 	public static int count = 0;
 	private int number;
	Counter(int in) { number = in;  count++; }
	public void setNum(int in) { number = in; }
	public int getNum() { return number; }
}
// TestCounter.java
public class TestCounter {
	public static void main(String[] args){
		Counter c1 = new Counter(10);
		System.out.println("Counter : " + Counter.count);
		Counter c2 = c1;
		c1.setNum(20);
		System.out.println("Number : " + c2.getNum());
		System.out.println("Counter : " + Counter.count);
	}
}
output

Counter : 1
Number : 20
Counter : 1

独習Java 第4版

独習Java 第4版

(持っているのは第3版だけど)
C++のからくり (forDummies series)

C++のからくり (forDummies series)

C++のからくり』はなかなか良い本だったような気がするけど、たぶんプログラミング初心者にはまず無理です。
まぁ、そもそもC++が初心者向け言語ではないので。
C言語は実務経験はないけど大体分かっていた自分にはそれなりに理解できていた気がします。


JDEEって依存関係をすべてAnt or Makefileで記述せんといけんのでしょうか?

クラスをオブジェクト用クラスCounter(っていう説明は変かな?コンテナとでもいうべきか)とmain用クラスTestCounterを準備してJDEEでコンパイルしました。
そうしたら、Counterクラスは普通にコンパイルできるのにTestCounterはできませんでした。
Counterクラスのシンボルが解決できないっていうので、何でだろうと思いながら、試しに普通にeshellで試してみたら問題なくコンパイルできました。
これってつまり、多少でも依存関係のあるファイルはMakefileまたはAntを使わないといけないっていうことなんでしょうか?