1 名前:仕様書無しさん mailto:sage [2006/08/28(月) 07:54:53 ] Sun認定Java資格 実用情報 4 【SJC-P用】 このスレッドは、Sun認定Java資格の Sun Certified Programmer for Java 2 Platform 5.0 Sun Certified Programmer for the Java 2 Platform 1.4 Sun Certified Programmer for the Java 2 Platform 1.2 に関して、具体的な『実用情報』を集めるために立てました。 過去スレ・関連スレ >>2 試験報告用テンプレ >>3 関連書籍 >>4 リンクなど >>5 ▼▼▼▼▼▼▼▼▼▼ ↓注目 ▼▼▼▼▼▼▼▼▼▼ このスレッドでは、 次の書き込みや議論は『 不要 』です。 「資格なんて意味ねーよ」 「実務経験関係なしにiStudyシコシコやってればとれる資格に意味ねぇ」 「3日で取れないやつはクソ」etc スレッドを荒らすだけの発言は他でやってください。 ▲▲▲▲▲▲▲▲▲▲ ↑注目 ▲▲▲▲▲▲▲▲▲▲ 前向きに、 SJC-Pに関する実用情報を議論するための スレッドにしましょう。
993 名前:仕様書無しさん mailto:sage [2008/03/16(日) 21:14:41 ] @Aが何を指すのか分からないんだが。a = @ b = A で合ってるか? a = b と代入した時点で、aが参照しているArrayクラスと、 bが参照しているArrayクラスが一緒になる。 もともとaが参照してたArrayクラスは、(たぶん)ガベコレでサヨウナラだ。 ((a=b)[a[3]]) : 1. a = b -> b 2. b[b[3]] -> b[3] -> 3 正確に書くんだったら、「Java言語仕様」でも参照しないとムリっぽ。 俺はあんな本全部覚えられるほど頭良くねえ。
994 名前:仕様書無しさん mailto:sage [2008/03/16(日) 21:15:08 ] >>991 代入とかくと、 System.out.println(a[(a=b)[3]]); 以下と同じということになるか、と。 a=b; System.out.println(a[a[3]]); これとはちがうからねえ。 一行で表現される式内の一時オブジェクトに代入ということかな、と。 #あ、最初の回答者ではないんで。
995 名前:仕様書無しさん mailto:sage [2008/03/16(日) 21:18:02 ] >>993 このあたりの基本文法構造は、CやC++でも同じでは?
996 名前:986 mailto:sage [2008/03/16(日) 21:27:27 ] 正直Javaは数年触ってないから自信ないよねっと。 class Test { public static void main(String[] args) { // Arrayクラスは、Java君がどっかに領域作ってくれるんじゃね int[] a = { 11, 12, 13, 14 }; // aは、Arrayクラスの在処を覚えた int[] b = { 0, 1, 2, 3 }; // bは、Arrayクラスの在処を覚えた int[] c = null; // >>991 「シャローコピー」でググって説明を探すと大吉 c = a; // aの指すArrayクラスの場所を、cに教えてやる a = b; // bの指すArrayクラスの場所を、aに教えてやる b[0] = 10000; System.out.println(a[0]); // b[0]と一緒 System.out.println(b[0]); System.out.println(c[0]); // a[0]と一緒 } } C:\test>javac Test.java C:\test>java Test 10000 10000 11
997 名前:991 [2008/03/16(日) 21:41:21 ] >994 違いますよ〜。 配列アクセスでは、ブラケット([])の式が評価される前に ブラケット([])の前にある式が完全に評価される事が保障されています。 その評価された値は別の場所に記憶されます。 たとえば、 class Test { public static void main(String[] args) { int index = 1; try { skedaddle()[index=2]++; } catch(Exception e) { System.out.println(e + ", index=" + index); } } static int[] skedaddle() throws Exception { throw new Exception("Ciao"); } } の結果は java.lang.Exception: Ciao, index = 1 となります。 ブラケット[]の中の式は評価されていません。
998 名前:仕様書無しさん mailto:sage [2008/03/16(日) 21:43:18 ] 何だお前ら、珍しくjavaの話してるな・・・
999 名前:986 mailto:sage [2008/03/16(日) 21:47:25 ] >>991 正確には「a = b」は bが指しているArrayクラスの位置を、aに代入する になる。 言い換えると「a = b」は a[0] = b[0]; a[1] = b[1]; a[2] = b[2]; a[3] = b[3]; の代用にはならん。 後、揚げ足取られるとウザイんで、 何でもかんでも「正確じゃない」って書いてる。
1000 名前:986 mailto:sage [2008/03/16(日) 21:48:42 ] まるっこコピーが欲しいならArray#clone()だろうか。 class Test { public static void main(String[] args) { int[] a = { 11, 12, 13, 14 }; int[] b = { 0, 1, 2, 3 }; // 1. bと同じ内容のArrayクラスを作る // 2. aに、1で作ったArrayクラスの場所を教えてやる a = b.clone(); b[0] = 10000; System.out.println(a[0]); System.out.println(b[0]); } } ハイ後は適当にヨロシク。あと次ぎスレへGO。
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。