SUN教科書 Java アソシエイツ (SJC-A)
SUN教科書 Java アソシエイツ (SJC-A) サン・マイクロシステムズ株式会社

翔泳社 2005-11-15
売り上げランキング :


Amazonで詳しく見る
by G-Tools


この本と受験チケットが翔泳社のサイトで抱き合わせで売られていたのと、

この当時この本しかなかったので購入。付録でついてくるiStudyの模擬試験はかなり使えました。

私はJava資格取得の初受験者だったので、親近感のない単語はぐぐったりして、

説明が書かれているサイトを読んで違う言い回しも覚えました。

(でもUMLなんかは解釈が違うサイトもあったりするので混乱しないように注意)


それでも不安だったので書店をまめにチェックしていたら

その後もう一冊インプレス社から問題集が出版されていたので買いました。

(ネットでも紹介していないか探してみたのですが・・・なかった。)


そちらの問題集は翔泳社の奴より、1ランク上の難易度の問題も多かったり、回答文の説明がもっと詳しかったりしたので自信と知識がつきました。ただ問題集なので1から勉強して、問題を解いていきたいって人には向いてはいないですね。


自分が受けてみた経験からして、

初心者の方は上記2冊を使って勉強したほうが良いかと思いますが、

Javaプログラムは結構書いたことがあって、オブジェクト指向とUMLをある程度知っている人は

両方の本を立ち読みでもして自分にあうほうを一つ買ったらいいかと思います。

(そういう人はもう1ランク上のSJC-Pを受けたほうがいいかもしれないけど笑)



~勉強期間について~

自分のデータでしかないのですが、参考までに書いておきます

自分は朝の電車で20分程度、夜1,2時間程度の勉強(主には参考書の問題を解くか、iStudyで模擬試験、時間があるときにはこの日記に覚え書き)を一ヶ月半くらいやってから受験に望みました。





java.awt
ユーザインタフェースの作成およびグラフィックスとイメージのペイント用のすべてのクラスを含みます。

java.io
このパッケージは、データストリーム、直列化、およびファイルシステムによるシステム入出力用に提供されています。

java.lang
Java プログラム言語の設計にあたり基本的なクラスを提供します。

java.net
ネットワーク対応アプリケーションを実装するためのクラスを提供します。

URLやソケットクラスを含む

java.util
このパッケージには、コレクションフレームワーク、レガシーコレクションクラス、イベントモデル、日時機能、国際化、およびさまざまなユーティリティクラス (StringTokenizer、乱数ジェネレーター、およびビット配列)が含まれています。


コレクションフレームワーク

オブジェクトをグループ化して管理するためのライブラリ

javax. swing
すべてのプラットフォームで可能なかぎり同じように機能する、「軽量」(Java 共通言語) コンポーネントのセットを提供します。

詳細: http://java.sun.com/j2se/1.4/ja/docs/ja/api/overview-summary.html

if文:
if文は、指定された条件の結果(trueもしくはfalse)に応じた処理を実行する場合に使う。

構文:

if(boolean式){
  //処理1(boolean 式がtrueのとき実行される)  
} else{
//処理2(boolean 式がfalseのとき実行される)
}

if(boolean式1){
  //処理1(boolean 式が1trueのとき実行される)  
} else if(boolean式2){
//処理2(boolean 式2がtrueのとき実行される)
}else{
//boolean 式1、2がfalseのとき実行される。
}

例:
int x = 10;
if(x % 3 == 0){
  System.out.println("xは3の倍数");
}else{
  System.out.println("xは3の倍数ではない");
}


switch文:
多分岐処理を実行する場合にしよう。if文でelse ifを複数書くよりもシンプルに書くことができる。

構文:
switch(式){
   case 整数1: // 式の結果が整数1と同じとき、以降の処理がすべて実行される。
      処理;   
   case 整数2: // 式の結果が整数2と同じとき、以降の処理がすべて実行される。
      処理;   
 
   …

   default: //どのcaseにも当てはまらない場合、以降の処理がすべて実行される。
      処理;   



例:
int x = 10;
switch(x % 3){

case 1:
     System.out.println("余り 1 です。");
case 2:
     System.out.println("余り 2 です。");        
default:
     System.out.println("余り 0 です。");}

}

break文:

これによりswitch、for、while、do whileの制御文を終了させることができる。break文にはラベル有りのものとラベル無しのものがあり、ラベル有りのものはそのラベルがつけられた制御文までを終了し、ラベル無しのものはbreak文のあるもっとも内側の制御文を終了します。ラベルはラベル名:の形で指定し、一般に終了させたい制御文の前に記載するものである。


※ラベルは各制御文の前だけでなく任意の場所に記載することができる。

構文:

ラベル: 制御文 {
  break ラベル;
}

bingo:   //ラベル
    for (int i = 0; i < slot.length; i++) {   
      for (int j = 0; j < slot[i].length; j++) {   
        if (slot[i][j] == award ) {   
          judgment = true;   
          break bingo;   //breakとラベル
        }
      }
    }

continue文はfor、while、do whileにおいてその後の処理をスキップさせ再び繰り返し処理の初めから実行させたい時に使用する。 break文と同様に、ラベル有りのものとラベル無しのものがある。  

構文:

ラベル:制御文 {
  continue ラベル;
}


例:
loop; //ラベル名
for (int x = 0; x < 3; y++){
for (int y = 0; y < 3; y++){
System.out.println("x = " + x + " : "+ " y = " + y);
if(x == 1 && y == 1){
System.out.println("--call continue--");
continue loop; //ラベル名を指定してcontinue
}
}
}

While文:

指定された条件がtrueである限り、繰り返し処理を実行します。

構文:

while (boolean式) {
  //繰り返し処理(boolean式がtrueのときに実行)
}

例:

while(X<5){

System.out.print(x);

x++;

}

do-while文:

少なくとも一回は繰り返し処理を実行し、後は指定された条件がtrueである限り実行

構文:

do{

//繰り返し処理(boolean式がtrueのとき実行)

}while (boolean式);

例:

do{

System.out.print(y);

y++;

} while(y<5);

for文:

for ( 式1; boolean式; 式2){

// 繰り返し処理(boolean式がtrueのとき実行)

}

例:

for(int y = 0; y<5; y++){

System.out.println(y)

}

5.0で追加された記述方法:

for ( 変数宣言:参照変数名){・・・}

例:

int [] num = {1,2,3,4,5};

for (int n: num) {System.out.println(n);}

配列は1つ以上のデータ型の集合を表現したものであり、

複数のデータをまとめて扱うことができる。


配列に格納するデータ(構成要素)は、インデックスで識別される。

配列では、primitive型、参照型ともに構成要素として扱うことが可能。


配列自体は参照型として扱われる。


配列の宣言と領域の確保の方法:


データ型 [ ] 配列名; // または データ名 配列名 [ ];

配列名 = new データ型 [ 要素数 ];

例:

int [] i; //宣言 int i[];でも可能

i = new int[3]; //領域を3つ確保 

int [] i = new int[3]; //一行で一気に宣言と確保

インデックス:

配列の中にある一つ一つの領域を要素という。各要素にはインデックス(添字)という通し番号がついており、このインデックスから要素が一つ一つ識別される。

インデックスは0からはじまりi = new int[3]; の場合配列 i には0~2までの3つのインデックスが存在することになる。


配列の要素を指定する場合:

配列名[ インデックス ] = 値;

要素を指定して代入する場合:

int [] i = new int[3];

i[0] = 10;

i[1] = 34;

i[2] = 64;


注意:インデックスが0~2しか使用可能なので-1とか3とか6といった範囲外の要素へのアクセスはコンパイルエラーではなくて実行時エラー(例外をスロー)になる。


配列の要素数の取得方法:

配列名.length

int [] i = new int[3];

i.length //3

配列の初期化方法:

データ型 [ ] 配列名 = {初期値1, 初期値2, 初期値3, ・・・ 初期値n};

int [] i = {10, 20, 30};



例:
int [42] x; //NG
int x [42]; //NG
int [] x = (1,2,3); //NG
char [] myChars; //OK
int [] x = new int[] {2,4,5}; //OK
int [] myScores []; //OK

列挙型のサポートにより、情報のまとまりやフラグ値などを論理的に表現することができるようになった。上述のような構造を従来の方法で表現すると、意味のない情報の集まりで表現しなければならず、また安全でなかった。

J2SE5.0で採用された列挙型を利用することで、安全に利用できるようになった。


使い方:

[修飾子] enum{要素1, 要素2, 要素3 ....}

public enum Animal{DOG, CAT, LION}
    
列挙された値は文字列ではなく、内部的に整数として扱われる。
上記の例で使われているDOGやCATは、特定の整数に対する別名として扱われるため、
二重引用符(")で囲んでいない。


論理演算子は、論理演算(否定、論理積、論理和)を行うための演算子で、

boolean型にのみ適用可能。結果もboolean型の値になる。

演算子
記入例
説明
&&
x && y
xとyの両方がtrueの場合にtrueを返す。
||
x || y
xとyのいずれかがtrueの場合にtrueを返す。
&
x & y
xとyの両方がブール型且つ両方ともtrueの場合にtrueを返す。両方の変数が整数型の場合はビットごとのAND演算を行う。
|
x | y
xとyの両方がブール型且ついずれかがtrueの場合にtrueを返す。両方の変数が整数型の場合はビットごとのOR演算を行う。
^
x ^ y
xとyの両方がブール型且つxとyが異なった値の場合にtrueを返す。両方の変数が整数型の場合はビットごとのXOR演算を行う。
!
!x
xがfalse場合にtrueを返す。



boolean型の組み合わせと論理演算の結果:

boolean値の組み合わせ
& &&
| ||
^
true-true
true
true
false
true-false
false
true
true
false-true
false
true
true
false-false
false
false
false