Java SE 7 Silver対策勉強をしながらメモ 2015/1/27
2015/03/29
だんだんなんだか日記じみてきましたが、試験対策メモをいつものごとくマークダウンで記載したのでそのままJetpack Markdownにお任せでアップします。
ソースとクラス
- 1ソースファイルにpublic指定クラスは1つのみ
- そのソースファイル名はpublic指定クラスと同じ
Test.java – public指定クラスはないのでOK
[java]
class Foo{}
class Bar{}
[/java]
Foo.java – Fooが同じ名前なのでOK
[java]
public class Foo{}
class Bar
[/java]
修飾子
クラスに使える修飾子
- ただしfinalとabstractを同時に指定するとコンパイルエラー
| 修飾子 | 意味 |
|---|---|
| public | publicにするとグローバルスコープとなりすべてのパッケージ内のクラスから利用可能なクラスとして定義できる。 |
| final | 拡張による継承を禁止。そのクラスを元にしたサブクラスを定義できなくなる。 |
| abstract | 抽象クラス。サブクラスを定義するためのスーパークラスとして利用。 |
| stricfp | クラス内に記述した浮動小数点演算を厳密に評価する。プラットフォーム非依存の浮動小数点演算を行う。 |
| アノテーション | @Overrideなど開発者自身が型を定義する。 |
| static | クラスメンバ |
メソッド宣言の修飾子
| 修飾子 | 意味 |
|---|---|
| public | アクセス制御 |
| protected | アクセス制御 |
| private | アクセス制御 |
| abstract | 抽象メソッド |
| final | オーバーライド不可 |
| static | クラスメソッド |
| synchronized | 同期のためのロック獲得。メソッドの処理中にオブジェクトをロックする。 |
| native | ネイティブメソッド |
| strictfp | 浮動小数点演算を厳密に評価する。プラットフォーム非依存の浮動小数点演算を行う。 |
リテラル
整数リテラル
| 進数 | 例 | 説明 |
|---|---|---|
| 10進数 | 255 | 0から9までの10個の数字を使用して数を表現する |
| 2進数 | 0b101 | 0と1の2つの数字を使用して数を表現する。先頭に0bを入れると2進数と判断される。bは大文字、小文字どちらでも可。 |
| 8進数 | 0377 | 0から7までの8個の数字を使用して数を表現する。先頭に0を入れると8進数と判断される。 |
| 16進数 | 0xff | 0から9までの数字とAからF(もしくはaからf)までのアルファベットを使用して数を表現する。先頭に0xを入れると16進数と判断される。xは大文字、小文字どちらもで可。 |
識別子
- 変数、クラス名、メソッド名
- 1文字目は英字,$,_
- 2文字目以降は数字も可
- $,_以外の記号はNG
- 予約語であっても大文字にすれば使用可能
- 予約語は下記
| – | – | – | – | – | – |
|---|---|---|---|---|---|
| abstract | assert | boolean | break | byte | case |
| catch | char | class | const | continue | default |
| do | double | else | enum | extends | final |
| finally | float | for | goto | if | implements |
| import | instanceof | int | interface | long | native |
| new | package | private | protected | public | return |
| short | static | strictfp | super | switch | synchronized |
| this | throw | throws | tranient | try | void |
| volatille | while |
ブロック
- ありえないコードでも制約にそっていればOK
- 下記は一見elseの書き忘れのようだがそうではなくて、ブロックは書けますよっていう問題なので、答えは全部出力される。
[java]
class BlockTest{
public static void main(String args[]){
int num = 5;
if(!(num > 5)){
System.out.print(“abc”);
}
{
System.out.print(“defg”);
}
System.out.print(“…”);
}
}
[/java]
インスタンス変数
インスタンス変数(メンバ変数)とは
- クラスから生成したオブジェクトが保持する変数
- クラス内(メソッドの外側)で定義
- static変数ではない
main()メソッド
- 以下、構文に従った記述のためコンパイルは通るが一番下のメソッドの正しい定義の構文のみが実行される。
- public とstaticは修飾子なのでどちらが先でも構わない
- voidは戻り値なので修飾子より後
- 引数は必ずStringの配列
- 「コンパイルするため」と「実行するため」の設問ひっかけに要注意!!!
[java]
class MainTest{
void main(){
//code
}
static void main(String args){
//code
}
void main(Object[] args){
//code
}
public static void main(String[] args){
//ここが実行されるだけ
}
}
[/java]
パッケージ
- java.langパッケージは暗黙的にインポートされているjavaの基本クラスのパッケージ
- 同じパッケージ宣言をしているクラスはインポートしなくても良い
- 階層化はクラス名の衝突を防ぐためのものでアクセス権などの関連付けには関係ない
- クラス名をパッケージ名を含めた完全クラス名で指定すればインポートしなくても良い
- java.*などというパッケージは存在しない
[java]
package pac1
public class Test1{
public static void main(String[] args){
pac1.pac2.Test2 test2 = new pac1.pac2.Test2();
test2.foo();
}
}
[/java]
[java]
package pac1.pac2
public class Test2{
public void foo(){
System.out.println(“Hello World”);
}
}
[/java]
静的インポート
- static変数、staticメソッドをクラス名を指定せずに使用するためのインポート機能
- 構文
[plain]
import static パッケージ名.クラス名.static変数名;
import static パッケージ名.クラス名.staticメソッド名;
import static パッケージ名.クラス名.*;
[/plain]
[java]
package pac1.pac2;
public class Access1{
public static int num = 55;
}
[/java]
[java]
import static pac1.pac2.Access1.*; //Access1クラスの変数、メソッドを静的インポート
public class Access2{
int num1 = num; //1行目の静的インポートがあるのでAccess1のnumを直接使用可
int num2 = pac1.pac2.Access1.num; //1行目のインポートがなくても完全変数名で指定可
int num3 = Access1.num; //Access1はインポートしていないのでコンパイルエラー
}
[/java]
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
「【大阪・本町】コミュニティピッチ×ビアバッシュ#0」で自分とコミュニティの関わりを振り返った発表をしてみました
「【大阪・本町】コミュニティピッチ×ビアバッシュ#0」というイベントで発表させて …
-
-
「SORACOM UG Online Handson #1 ~スマホで顔認証編~」に参加しました
久しぶりのSORACOM UG勉強会に参加しました。 SORACOM Air メ …
-
-
Alexa Day 2018で「Alexa Skill Contest」を聞きました
Alexa Day 2018のラストセッションは、「Alexa Skill Co …
-
-
四国クラウドお遍路 2020 松山サテライト会場に参加しました
四国クラウドお遍路2020に参加してきました。 往路 伊丹空港から飛行機で行きま …
-
-
Java SE 7 Gold対策勉強をしながらメモ 2015/9/1
さて、9/26の試験を目指して久しぶりに試験勉強を始めます。 今月は非常に忙しい …
-
-
「AWS Expert Online 13 / JAWS-UG浜松 AWS勉強会 2021#1」に参加しました
本日のAWS Expert Onlineのテーマは「今日から始める、イベントドリ …
-
-
LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理
作る部分 LINEからのメッセージを受けて各APIより返信し、StepFunct …
-
-
「JAWS-UG朝会 #17」に参加しました
朝7:30からのJAWS-UG朝会。 コース実施の日は配信スタジオへの移動時間な …
-
-
Alexa Skills Kit 最新アップデート(Alexa Day 2019 でのブログ)
以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …
-
-
JAWS DAYS 2021の思い出(配信とランニング)
JAWS DAYS 2021前夜 前日は移動があったので、前夜祭をモバイルで見聞 …
