ヤマムギ

growing hard days.

*

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入門ガイド」という本を書きました。

 - Java, study , ,

ad

ad

  関連記事

「JP_Stripes (Stripe ユーザーグループ) Tokyo Vol. 6 — Stripeの使いドコロを知る」に行ってきました

「JP_Stripes (Stripe ユーザーグループ) Tokyo Vol. …

ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順

ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …

Rapidminerハンズオン勉強会に行ってきました

機械学習 OSSのRapidminerの勉強会に行ってきました。 OSS BI …

kintone Café 大阪 vol.11で登壇しました

kintone Café 大阪 vol.11「kintoneと色々つないでみる …

「JP_Stripes Tokyo Vol.7 Stripe at Doorkeeper and MakeLeaps」で受付をしました

全編英語でJP_Stripes(Stripeの勉強会)の開催がありまして、受付を …

Java SE 7 Silver対策勉強をしながらメモ 2015/1/30

本日は配列です。 いつものごとくマークダウンで記載したのでそのままJetpack …

Alexa Day 2018にサポーターの中の人として(初)参加しました

2018/2/11に神戸三ノ宮のスペースアルファ三宮で開催されたAlexa Da …

「【大阪・本町】コミュニティピッチ×ビアバッシュ#0」で自分とコミュニティの関わりを振り返った発表をしてみました

「【大阪・本町】コミュニティピッチ×ビアバッシュ#0」というイベントで発表させて …

サバワさんとAlexa(Alexa Day 2019でのブログ)

ランチタイムセッション2本目はサーバーワークスさん。 以下は、気になったことのメ …

DevLOVE関西 現場甲子園2015 「西日本大会」に行ってきました

DevLOVE関西 現場甲子園2015 「西日本大会」に行ってきました。 全部で …