Sun認定Java資格 実用情報 4 【SJC-P用】at PROG
Sun認定Java資格 実用情報 4 【SJC-P用】 - 暇つぶし2ch936:仕様書無しさん
08/03/09 18:36:27
>>935
本のタイトルが全く同じなら(他の本は違うものもありますが)誤植以外は、同じだと思いますよ。

>>help
ジェネリックが憎すぎます。
再帰的(?)ジェネリックスが分かりません。
たとえば、
Seq<Seq<A>>
Seq<String>.Zipper<Integer>
です。
これどういう意味でしょうか?
ちなみに、まったく意味が分かっていないのでこれだけじゃ、分からん。
と言われれば終了です。
すんません...orz

937:仕様書無しさん
08/03/09 18:48:42
>>936
再帰的だからって何もわからなくなることはないだろう。
どういう意味って特別に別の意味など発生しないよ。

関数呼び出しと再帰関数呼び出し

f() {


938:仕様書無しさん
08/03/09 18:49:25
 f();


これだって呼び出しの意味がかわるわけでもないし。

939:仕様書無しさん
08/03/09 19:40:46
???
すいません。分かりません。
new でインスタンス化しようとするとどんな式になりますか?
new Seq<Seq<String>>();
みたいな感じですか?

940:仕様書無しさん
08/03/09 19:47:38
>>939
そんな感じだ。

<>の内部は静的情報をおくとこなので、newみたな動的情報ははいらない。
ただそれは再帰的であることが問題なわけだはないよな?
Set<new Integer>とかけないことはわかっているだろう?

941:仕様書無しさん
08/03/09 19:51:33
ジェネリクスはコード書いた方が理解が早いよ
お、便利だぜ!と思ったならば、ほとんどの問題はその時点で解ける

942:仕様書無しさん
08/03/09 20:01:25
>>940
出来ないという事だけは、分かっています。
しかし、理由は分かりません。
具象化可能型と関係あるんでしょうか?
確か、一部の型情報はコンパイル時に消去されるとかなんとかだったような。

すいません。
ご教授おねがいします。

943:仕様書無しさん
08/03/09 20:11:13
>>942
<>内部には、宣言としてはかけるがnewなどで実態を
割当てるときはかけない。これは再帰とは別問題だ。

曖昧な理解だと自覚があることは大事だ。
それがあればあとはその違和感を消し去るだけだ。
そちらは、そのうち問題なく理解できるようになるよ。

944:仕様書無しさん
08/03/09 20:25:01
>>943
ありがとうございます。
色々なところで、勉強しなおします。
ジェネリックは、とても便利な機能なので完全に理解します。必ず。
あと、コードはいつも実際に動かしています。
色々と気づくこともありますから。

945:仕様書無しさん
08/03/09 21:00:17
class Cell<?>の、?はワイルドカード。
class Cell<E>の、Eはワイルドカードとなるのでしょうか?

946:仕様書無しさん
08/03/09 22:31:21
>945
class Cell<E> {
}
としたならば、Cellクラスを使用するときにジェネリクスの指定が出来るという意味。
例えば、
Cell<String> cell = new Cell<String>();
この時に、どんな型でもOKとワイルドカード指定する場合には、
Cell<?> cell = new Cell<?>();
となる。

947:仕様書無しさん
08/03/09 22:33:21
続き
class Cell<E> {
  void set(E obj);
  E get();
}
となっていれば、
Cell<String> cell = new Cell<String>();
cell.set("hoge");
String hoge = cell.get();
と書ける
Cell<?> の場合は型がワイルドカード、すなわちObjectとなる

948:仕様書無しさん
08/03/09 23:59:35
>>946,947
なるほど。
ありがとうございます。
すごく勘違いしていたようですね。

949:仕様書無しさん
08/03/12 14:53:40
【Java経験】 5~6年(学生時代3年+仕事半年+残り講師)
【言語経験】 Java、JavaScript、Ruby
【試験番号】 310-055
【 正解数 】 61/71
【受験回数】 1回
【勉強期間】 普段から触ってるのでよくわからない
【使用教材】 紫教科書、黒問題集
【出題内容】 ジェネリックス1割、スレッド1割、後は均等に出た。
       黒問題集の序盤にある、簡単な問題と、フロー制御で
       トレースさせるような問題は出なかった。
       100%いくと思ってたけど、split("\s")がコンパイルエラー
       とかを見落としてるのがわかったので、
       かなり注意しないと、高得点は難しいんだと感た。
       これから受ける人は、ジェネリックスとスレッドを
       完璧に理解するべき。
       ジェネリックスはほぼすべてD&Dでした。

950:仕様書無しさん
08/03/12 15:40:33
>>949
おめでとうございます。

ところで、D&Dとは何でしょうか?
型変数の境界の事ですか?

951:仕様書無しさん
08/03/12 16:06:03
>>950
僕は310-055持ってないけど教えてあげるよ
どらっぐあんどどろっぷだよ

952:仕様書無しさん
08/03/12 16:41:03
【Java経験】6~7年
【言語経験】C++,C#,VB,PHP,perl
【試験番号】310-055
【 正解数 】62/72
【受験回数】1回目
【勉強期間】1日数時間*1週間
【使用教材】日経BP(035+027版) SoftBank問題集(055)
【出題内容】満遍なく

問題集と比べて瞬殺できる問題が少なかった。
なにげに明朝コードに見慣れず違和感があった。
D&D問題が多かった印象(10~15問はあったような)。
D&D問題の見直しがクリアされるのは厳しかった。
スレッドは記憶するだけの単純な問題は無かった。

はじめてこのスレに来ますた。
レス読んだ感じでは、去年の後半あたりから難しくなったのでは?
直前にSoftBank問題集 模試1=70/72 模試2=67/72 で望んだ。
模試は90分くらいで終わったが、本番は2時間ちょいかかった。
問題集の盲点を突く問題が多かった気がする。

953:仕様書無しさん
08/03/13 20:23:20
Super sps={new Sub(),new Sub(),new Sub()};
Sub[] sbs=(Sub[])sps;
spsはサブクラスのオブジェクトを参照しているのに
なぜキャスト例外がスローされるのでしょうか

954:仕様書無しさん
08/03/13 20:25:31
気に入らんから

955:仕様書無しさん
08/03/14 00:09:26
Super[] sps={new Sub(),new Sub(),new Sub()};
だろ
解説に書いてあるとおり、spsはSuper型の配列だからだ
要素はかんけーねー
いや、しらんけど

956:仕様書無しさん
08/03/14 10:03:12
>>953
>>162-166 嫁

957:仕様書無しさん
08/03/14 18:56:01
過去ログにあったよ
Super sp = new Sub(); ”Sub”のインスタンス
Sub sb = (Sub)sp; sb=”Sub”のインスタンス

Super[] sps = {new Sub(), new Sub(), new Sub()}; ”Superの配列”のインスタンス
Sub[] sbs = (Sub[])sps; sbs≠”Superの配列”のインスタンス

958:仕様書無しさん
08/03/14 19:07:07
【Java経験】3ヶ月
【言語経験】C
【試験番号】310-035
【 正解数 】52/61(85%)
【受験回数】1回目
【勉強期間】2ヶ月
【使用教材】黒本 web問題
【出題内容】満遍なく
黒本だけじゃ無理、英語ができれば英語サイトでいい問題集を探して、きっと楽勝

959:仕様書無しさん
08/03/14 23:44:26
035は黒本だけで楽勝だろ
055は受けてないから知らんけど

960:仕様書無しさん
08/03/15 00:40:03
035は、>>959の言う通り黒本だけで十分。
黒本1冊で90%以上取れるよ。

961:仕様書無しさん
08/03/15 00:42:56
そういう人もそうでない人もいるわけで

962:仕様書無しさん
08/03/15 01:09:55
黒本のみで高得点で楽々合格できる力は付くという意味ですよ

963:仕様書無しさん
08/03/15 01:29:03
>>961は、一度試験で落ちないと、
自分の勉強が浅いという事に気づかないタイプだな。

かくいう俺がそうだったんだけどね。

964:仕様書無しさん
08/03/15 01:50:46
黒でも銀でも
疑問に思ったことを試してみたりネットで調べたり、そもそも知識があったり
そういう人なら1冊で大丈夫
駄目な人は色んな本でちょっと違った説明や違った角度からの問題で知識つければいい
まあ好きにすればいいってこった

965:仕様書無しさん
08/03/15 02:08:16
>>958
そうそう、英語サイトなら、豊富にMockテストが存在する。
知識確認はそれだけで基本的にはOK。(経済コスト0)

ただ英語解釈は多少は時間かかる。お金と時間のトレードオフ。

966:仕様書無しさん
08/03/15 02:19:13
黒を5周して受験したけど、確実に解けたのは3割程度だった
残りの7割は勘と消去法で解いてギリギリ合格 
運で受かったようなものなので、合格した喜びはなかった

こんな馬鹿な俺でもJavaプログラマになれるのか不安

967:仕様書無しさん
08/03/15 02:26:13
プログラマになる前に取る資格というよりは1年くらい経験して取るような資格だから仕方ない
専門とか大学でやっていてギリギリってのはサボりすぎ

968:仕様書無しさん
08/03/15 02:33:06
staticって何?って段階から約3ヵ月間猛勉強して87%で合格しました
努力は裏切らないなと改めて実感したよ

969:仕様書無しさん
08/03/15 10:02:40
>>966
消去法で解けてるんだから力はついてるはず
勘って言ってもある程度は絞れてるんだから
運で受かったわけじゃないさ
大切なのは難しいからって諦めない強い心だ

970:仕様書無しさん
08/03/15 10:11:16
>>969
>大切なのは難しいからって諦めない強い心だ

泣いた

971:仕様書無しさん
08/03/15 17:08:46
>>969
(´;ω;`)ウッ
何といい言葉
何かやる気でてきた

972:仕様書無しさん
08/03/15 18:00:51
おい、試験申し込もうとしたんだが、アメリカ銀行ってなんだ?
ATM行ってもそんな振込先表示されないんだが…

973:972
08/03/15 18:07:16
やべぇ、なんだか腹が立ってきた…

974:仕様書無しさん
08/03/15 18:58:43
くれか使え

975:仕様書無しさん
08/03/15 19:44:43
>972
俺は、UFJ銀行で払った。

今さらかもしれんが、NECでチケット買った方が安いぞ。

976:972
08/03/15 19:51:23
>>975
ありがとう。
でも、今調べたら完売してたよ。残念。

Sunのページ意外にも申し込み方があるなんて知らなかった。
みんなそういうのどうやって調べてくるんだろ。

977:972
08/03/15 20:09:09
URLリンク(www.rakuten.co.jp)
俺も調べたらこんなのが出てきた。

あんま値段は変わらないけど、コンビニで支払い出来るのがいいな。
機嫌は直ったよ。

978:仕様書無しさん
08/03/15 22:39:35
>976
再受験キャンペーンチケットは、完売という事だよ。

URLリンク(www.neclearning.jp)
の下の(上のNo2ではなく) No2欄に載ってるよ。
1枚\21000だよ。

979:仕様書無しさん
08/03/15 22:40:54
これ取る意義って履歴書に華を添えるだけ?

980:仕様書無しさん
08/03/15 22:48:32
>979
帰れ

981:仕様書無しさん
08/03/15 22:53:23
不毛だ不毛すぎるぜ 次スレでは上みたいなのはスルーな

982:972
08/03/15 23:02:41
>>978
げ、本当だ…。
やばい、また腹が立ってきた…

983:仕様書無しさん
08/03/15 23:10:14
>982
すまん。黙っておけばよかった。

984:仕様書無しさん
08/03/15 23:59:10
それもアレだがな

985:仕様書無しさん
08/03/16 19:04:36
誰か教えてください。
(再来週には、SJC-Pを受けようと思っています)
Java言語仕様で、
class Test {
 public static void main(String[] args) {
  int[] a = { 11, 12, 13, 14 };
  int[] b = { 0, 1, 2, 3 } ;
  System.out.println(a[(a=b)[3]]);
 }
}
の結果が14になります。
しかし、
class Test {
 public static void main(String[] args) {
  int[] a = { 11, 12, 13, 14 };
  int[] b = { 0, 1, 2, 3 } ;
  System.out.println(a[(a)[3]]);
 }
}
の結果は、ArrayIndexOutOfBoundsになります。
なぜでしょうか?


986:仕様書無しさん
08/03/16 20:14:02
>>985
うーん、これに何の意味があるのかサッパリわからん。
こういうのがあるから資格なんぞ寝言だと思うんだが……まあいいや。

前者:
 a=b //aにbを代入(正確じゃないが、資格レベルならそれでいいかな)
 (a=b)[3] -> b[3] -> 3
 a[(a=b)[3]] -> a[b[3]] -> a[3] -> 14 
 
後者:
 (a)[3] -> a[3] -> 14
 a[(a)[3]] -> a[14] -> インデックス超過

処理の優先順に合わせて、一個一個値を代入してみな。

987:仕様書無しさん
08/03/16 20:20:36
>>986
基本的な配列の考え方だろ。
意味が無いなんてとんでもないぜ。

988:986
08/03/16 20:43:04
>>987
単なる言葉遊びに見えちまうんだよ……。
実際の現場ではこんな書き方せんだろ?

まあアレだ、資格全然持ってない奴のヒガみ、とでも。

989:仕様書無しさん
08/03/16 20:51:10
>986
なるほど、ありがとうございます。
理解出来ました。

990:仕様書無しさん
08/03/16 20:58:25
System.out.println(a[(a=b)[3]]);
①②

これって①、②の両方ともbにおきかわるってわけではないんだね?

ではこれはどうかな?
System.out.println((a=b)[a[3]]);

991:仕様書無しさん
08/03/16 21:05:45
>989
正確ではないとは、どういう事でしょうか?
単に、ブラケット中([])の式の評価に先だってブラケットの左側にある式が完全に評価されているのだから
(aにbが入ってもこの式には影響しないから)
代入という言い方が正確ではないのでしょうか?
ご指導お願いします。
Java言語仕様を読んで勉強をしているので正確な理解がしたいのです。

992:991
08/03/16 21:14:01
>990
3だよ。

993:仕様書無しさん
08/03/16 21:14:41
①②が何を指すのか分からないんだが。a = ① b = ② で合ってるか?

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:仕様書無しさん
08/03/16 21:15:08
>>991
代入とかくと、

System.out.println(a[(a=b)[3]]);

以下と同じということになるか、と。
a=b;
System.out.println(a[a[3]]);

これとはちがうからねえ。
一行で表現される式内の一時オブジェクトに代入ということかな、と。

#あ、最初の回答者ではないんで。

995:仕様書無しさん
08/03/16 21:18:02
>>993
このあたりの基本文法構造は、CやC++でも同じでは?

996:986
08/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
08/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:仕様書無しさん
08/03/16 21:43:18
何だお前ら、珍しくjavaの話してるな・・・

999:986
08/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
08/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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch