ヤマムギ

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

  関連記事

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

今日から練習問題を再確認。 ひと通りテキストを終えた安心感からかイージーミスが連 …

スマートスピーカーで提供する料理体験(Alexa Day 2019でのブログ)

以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …

「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Microservices × Serverless On AWS」で運営と懇親会LTをしてきました

「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …

Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってきました

Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってき …

JAWS DAYS 2018 「Cost-Driven AWS クラウドアーキテクチャデザインとコスト最適化方法 – Cost-Driven AWS Cloud Architecture Design : The Lean Startup on AWS」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

AlexaのSmart HomeをAWSで作る方法(Alexa Day 2019でのブログ)

以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …

ActRoomの仕様を書いてみた

これはLow-Code/No-Code Advent Calendar 2018 …

「TwilioJP-UG大阪+AWScean合同勉強会」に行ってきました

ノンEC2のススメ アイレット河村さん EC2は柔軟すぎる PaaSの良いところ …

「DevLOVE関西 ShareWisサービス開発の現場」に行ってきました

DevLOVE関西とは 「DevLOVE関西は素振りの場、現場は実践の場」 いつ …

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

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