ヤマムギ

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]


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

 - Java, study , ,

ad

ad

  関連記事

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (6) Twilioからの電話受付と登録処理

作るところ 電話がかかってきてTwilioで受け付けてStepFunctions …

「MasterCloud #9 新春クラウドLT大会」でLTをさせていただきました

Alibaba Cloudを検索してたらconnpassの「MasterClou …

AWS Summit Tokyo 2017 聴講したセッションのメモ

2017年6月に参加しましたAWS Summitで聴講したセッションのメモを記し …

「DeNA re:Invent 2018 報告会」でエンジニアが伝えたいre:Inventの話が聞けた

DeNAさんのre:Invent報告会に参加しました。 開催されているDeNAさ …

「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く未来~」に行ってきました

「X-Tech JAWS 【第2回】~9割のX-Techと1割の優しさで切り拓く …

DevLove関西 「プロジェクトマネジメントの勘所」に行ってきました

DevLove関西 「プロジェクトマネジメントの勘所」に行ってきました。 サイボ …

AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた

AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …

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

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

「SendGrid Night in Osaka #2」でLTさせていただきました

SendGrid Night in Osaka #2でLTをしてきました。 会場 …

「GCPUG Tokyo Container Builder Day February 2018」に行ってきました

GCPUGは神戸以来の2回目で参加させていただきました。 申し込もうかと思ったら …