ヤマムギ

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

  関連記事

MySQL勉強会 in 大阪(第10回)に行ってきました

MySQL勉強会 in 大阪(第10回)に行ってきました。 オプティマイザー、G …

AWS認定のバッジ管理が新しくなったみたいです

ふと、メールが届きました。 なんでしょうね。 いきなりリンクを踏むのもあれなんで …

「GitLab Meetup Tokyo #7: 新年度応援&GitLab 11.0」にSNS & ブログ枠で参加しました

GitLabのミートアップがあるのか!さすが大東京! GitLabのもとユーザと …

ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順

このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS) …

Developers Summit 2016 KANSAIに行ってきました

Developers Summit 2016 KANSAIに行ってきました。 熱 …

Alexa Day 2018で「kokexaの話」を聞いてきました

スピーカーはサバワ坂本さん これは、私、山下の勝手な印象とか思い込みですが、坂本 …

JAWS-UG Osaka 第15回勉強会 AWS Summit Tokyo 2016 アップデート追っかけ会

「JAWS-UG Osaka 第15回勉強会 AWS Summit Tokyo …

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

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

Alexa Day 2018で「Alexa and Machine Learning on AWS」を聞きました

Photo by 金春さん 20180211 alexa day 2018 Al …

「kintone Café 大阪 Vol.14 〜モザイクなし!うちのkintoneはこれだ!〜」で登壇しました

「kintone Café 大阪 Vol.14 〜モザイクなし!うちのkinto …