宣言、初期化、スコープ

Pocket

データ型と変数

 

●予約後

・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 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (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 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (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 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)
徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)

タイトルとURLをコピーしました