データ型と変数
●予約後
・50ぐらいある(どうせ試験に出ないから、あんまり意識しなくても良い。)
・enum、assertはJavaのバージョンによって使用が制限される。
・assetはJava 1.4、enumはJava 1.5から使用が不可となる。
・javacコマンドのコンパイルオプション-sourceでJavaのバージョンを指定してコンパイルが可能。
例)javac -source 1.4 xxx.java
●識別子
・命名規約
・予約語、定数は使用不可。
・記号は$、_のみ使用可
・先頭数字は不可
●データ型
・データ型は基本データ型と参照データ型で構成される。
●リテラル
・真偽値
・true、false
・整数
・1(int)
・1L(lomg)
・0x1(16進数)
・01(8進数)
・浮動小数点
・1.23f(float)
・1.25d(double)
・文字
・’あ’(シングルクォートで囲む)
・文字列
・”あい”(ダブルクォートで囲む)
●変数のスコープ
・メンバ変数(オブジェクトの属性)
・インスタンス変数(クラスに定義、インスタンス化後利用可)
・static変数(クラスに定義、インスタンス化せず利用可)
・ローカル変数
・メソッドローカル変数(メソッドに定義)
・ブロック変数(メソッド内for文等に定義)
●変数の初期化
・メンバ変数は以下の値で、自動初期化される。
(これを覚えておくと不要な初期化コードを記載する必要がないので便利)
・boolean=false
・byte=0
・short=0
・char=’u0000′
・int=0
・long=0L
・float=0.0F
・double0.0D
・参照型=null
・ローカル変数は明示的に初期化しなければ、コンパイルエラーとなる。
●暗黙の型変換(キャスト)
・暗黙キャストはメソッド呼び出し時にも適応される。
例)xxx(1); void xxx(long var){}はintからlongに暗黙変換される。
・暗黙キャストは基本データ型が優先される。
例)xxx(1); void xxx(long var){}; void xxx(Integer var){}はintからlongに暗黙変換される。
・拡大型変換
・byte→short→int→lomg→float等、より大きく変換。(ex. char→int)
・縮小型変換
・int→byte等、intからより小さく変換
●定数
・final staticを付与し、明示的な初期化が必要。
interfaceの場合はfinal staticは省略可能(暗黙的にfinal staticとなる)
徹底攻略Oracle認定JavaプログラマSE 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)
徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)
演算子
●演算子の優先順位
・=は右から評価される。a = b = c = 10; 10→c→b→aの順。
・インクリメント、デクリメントは前置と後置の2種類が使用可能。
前置は式評価前にカウントアップ、ダウン。高知は式評価後にカウントアップ、ダウン。
●キャスト
・暗黙の型変換で対応できない場合、(データ型)オペランで明示的にキャストする。
・boolean型への変換は不可。またデータの一部が欠落する可能性がある。
●0除算について
・100/0はエラー
・100%0はエラー
・100.0/0はデータ型.XXX_INFINITY
・100.0%0はNaN
●数値昇格
・左右のオペランドで基本データ型が異なる場合、暗黙の型変換が可能なオペランドが暗黙の型変換される。
・baye a,b; a=10; b=10; byte aa = a + b;の場合は縮小型変換が効かない。
但し、複合代入演算子を使用した場合は、強制的な暗黙の型変換が行われるため、エラーとならない。
・baye a,b; a=10; b=10; byte aa += a + b;
●XOR
・true ^ true → true
・false ^ false → true
・false ^ true → false
・true ^ false → false
●短絡評価
・&&、||は短絡評価。if(0 > 10 && 0> 11)は0 > 10のみ評価。
●代入演算子の条件式での使用
・if(b = true)は利用可能。わかりにくいので使わない。
徹底攻略Oracle認定JavaプログラマSE 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)
徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)
カンニングシート4:参照型変数と配列
●newでインスタンス生成
インスタンスを利用するためには参照型変数に代入する。
参照変数に代入せず、直接利用することもできる。
●連結、比較
・+での文字列連結時のtoString()が自動発動する条件は左右どちらかが文字列の場合のみ。
・参照型同士の比較(==、equals)はアドレス比較。データそのものの比較ではない。
但し、Stringクラスのequalsメソッドはオーバーライドされているため、
アドレスではなくデータそのものが比較される。
●Stringクラス
・newは常に新しいインスタンスを作成。
・=代入は文字列リテラルを専用のメモリ領域に格納。
同じ文字列リテラルなら、別インスタンスとならない(同じアドレスが格納。)
メモリ効率は=代入のほうがよい。
●配列
・[]は変数名の前後どちらでも良い(int []a; int[] a;)
int [] a, b;でa、bどちらも配列化。
・newで作成。配列数は配列作成時から変更不可能。作成した時点で初期値が設定される。(メンバ変数の初期値同様)
●二次元配列
・int a[][]; int []a[]; int [][]a; int[] a[];
●ジャギー配列
・int a[][] = {{1}, {1,2}}
●参照型の暗黙の型変換
・配列→クラス
・変換は可能。但し、明示的なキャストが必要。
int a = {1}; Object b = (int[])a;
・クラス→インターフェイス
・継承元への変換は可能???
●列挙型
・メソッド内で定義不可。
・オブジェクトを継承していると考えて良い。メソッドを保持。compareTo、values、valueOf等。
通常のクラスと同様の使い方が可能。
・enumを定義する際にカンマ、セミコロンで終了するのはOK。
enum{a,b,c; }はOK。enum{a,b,c, }はOK。
●メソッド引数
・基本データ型と参照型の違いに注意
●可変長引数
・XXX(String… args)
複数可変長は定義できない。(不定になる)
改変長は最後に定義しないとコンパイルエラー(不定になる)
徹底攻略Oracle認定JavaプログラマSE 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)
徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)