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
関連記事
-
「JAWS-UG京都 最新のAIを本気で学ぼう」に参加しました
前日 京都タワーの地下のフードホールで運営メンバーのみなさんとご飯食べてました。 …
-
実録 JAWS DAYS 2016 ~スタッフ,RoadTrip,懇親会LTで参加しまして~
2016/3/12 参加してまいりましたJAWSDAYS2016 スタッフとして …
-
JBUG(Japan Backlog User Group) 記念すべき大阪開催の勉強会1回目に参加しました
JBUGが我らがマイタウン大阪で開催されるとのことで、お久しぶりのTAMさんにお …
-
「CLS高知2023戻り鰹編」に参加しました
12回目のCLS高知、2023戻り鰹編に参加しました。 高知駅付近から弁天座へ自 …
-
Developers Summit 2018 「将棋プログラムPonanzaにおける強化学習、ディープラーニングとその先」を聞きました
以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …
-
「IBM Cloud Community Summit 2018 フルマネージドデータベースというのは使えるのか?IBM Cloudでのデータ活用事例いろいろ」でIBm Cloudのデータベースサービスを聞かせていただいた
IBM Cloud Community Summit 2018におじゃましました …
-
Alexaで操作するスマートホームシステムの概要(Alexa Day 2019でのブログ)
以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …
-
「Engineering Productivity Meetup #2 in 大阪」に参加しました
AWS SSOのしくみを AWS IAM Identity Centerへ移行し …
-
Alexa Day 2018で「Alexa はどこにでも。AVSが開くAlexa Enabled なライフスタイル」を聞きました
photo by 金春さん スピーカーはオランダから一時帰国中の伊東のともさん …
-
Developers Summit 2024「事業で成果を出すCTOたち」を見ました
Developers Summit 2024に参加しました。 大阪から朝早くの新 …