![見出し画像](https://assets.st-note.com/production/uploads/images/113553621/rectangle_large_type_2_a18e3d5c33f263f7b13b295b814d3031.png?width=1200)
08/16 Java Bronze SE
■参考書
■第1章 データの宣言と使用
同じレベルのインプットを何度も繰り返す行為は自己満足のため目的思考で切り替えようと思う。講義で学習した範囲は今後紫本を飛ばして黒本を解くアウトプットを積極的やることにした。講義や動画で学習しても意外と答えられない。実際に一番重要だと感じたのは解答解説を読んで問われた内容について理解を深めることだった。
■第1章 問題数 10問
問題数 25問
目標速度 各問*30秒(読解力と速度を両立することを意識)
名目速度 各問*55秒(本試験、60分/65問から算出)
解答時間 17.5分/22.9分
正答率 10/25
■1周目
![](https://assets.st-note.com/img/1692177076654-bCpSj0mEun.png)
■過去問分析
01.データ型はプリミティブ型と参照型がある。
▼プリミティブ型は8種類あり、大別して4つになる
(1)byte, short, int longの整数型
(2)float, doubleの浮動小数点数型(小数点あり)
(3)charの文字型
(4)booleanの真偽値
▼変数に代入できるデータは、
(1)数値
(2)文字
(3)真偽値
02.参照型は3種類ある。
※どこのサイトもクラス型とか参考書とは異なった名称を使っているので、いったん保留にしておく。String型は配列型、char型でも引数に[]を使用していたら配列型StringとDateはクラスつまりはオブジェクト型という流れになるらしい。追って理解する
▼参照型
(1)オブジェクト型
(2)配列型
(3)列挙型
03.整数値ときたら浮動小数点型floatとdouble以外で消去法で3つが残る。
整数型はイメージと数(4種)で覚える
(1)byte bitが1つで、byteで2つ
(2)short 少数桁「数がショートする」
(3)long 多数桁「桁数が長い(long)」
(4)Int 整数「”Integer”のInt!
▼小数点
単精度浮動小数点型(float) 32ビット
倍精度浮動小数点数型(double)float 64ビット
▼char型
文字コードが整数値であることから整数を扱う。
04.真偽値はTrue/False、つまりはBoolean
▼Booleanは以下の由来がある
イギリスの論理学者であり数学者でもあるGeorge Booleが体系化した代数(ブール代数)に関連した演算,演算子,演算式などを表すときに使う形容詞.
05.変数のデータ型、文字列は、Stringクラスで扱う
プリミティブ型と参照型の変数が何を保持して何を保持できないかに注意
▼プリミティブ型
〇 数位、文字、真偽値のリテラル
✖ (int型)参照
✖ 文字列
▼参照型
〇 インスタンスへの参照
〇 (クラス型)文字列
✖ 整数値
06.変数の宣言方法(アクセス修飾子)
▼ルール
1.アクセス修飾子は、省略も可能
2.変数名はメソッド内で一意でなくてはならない
3.あらかじめ定義されている予約語は変数名として利用できない
予約語一覧
4.同じ型なら一度に宣言可能「String name, code」
5.変数名の一文字目に数字は使用できない「double 3.7」
6.変数名の一部に「$」と「_」以外は使用できない
07.数値を扱うデータ型が保持できる値
int型の3とdouble型の3.0はコンピュータ内では異なる値
▼Javaが持つ型変換機能
(1)広くする型変換(暗黙の型変換)
(2)狭くする型変換(明示的な型変換)
・データのビット落ちが発生してしまう可能性あり
・意図したとおり動作しないと判断されコンパイルエラー
・キャスト演算子「()」でビット落ちの危険性を認識していることを明示
08.真偽値リテラル
Boolean型はtrueかfalseの2種類のリテラルのみ取り扱う
▼真偽値リテラルの注意以降
1.大文字と小文字は区別される
true/falseのみでTRUE/FALSEは別物
2.「'」や「"」で囲むと文字や文字列で真偽値リテラルではない
true/falseのみで'true'/"false"は別物
09.文字データの指定方法
▼char型で扱う文字の指定方法
1.シングルクォーテーション「'」で1文字を囲む
2.Unicodeで指定する(16進数)
「\uxxxx」の「xxxx」を16進数で表した文字コードで指定
package test;
public class test02_09 {
public static void main(String[] args) {
char c = 'U';
char d = '\u1F1C';
System.out.println(c);
System.out.println(d);
}
}
U
Ἔ
10.String
Stringは文字の集合体である文字列を扱うためのクラス
String=クラス=オブジェクト型=つまりは参照型
▼JavaのString型ルール
1.文字列リテラルを記述するだけで自動的にStringのインスタンスが生成され、その参照が戻される
※インスタンス:クラスが生成したオブジェクト
2.String型変数はStringのインスタンスへの参照しか扱えない
※ダブルクォーテーションで括ったもの以外はコンパイルエラーとなる
11.定数の宣言方法
▼定数の宣言ルール
1.変数同様、「アクセス修飾子」は省略可能
2.同じ型はカンマ区切りで複数の定数を一度に宣言可能
3.一度値を代入するとその値を変更できない
アクセス修飾子(省略可能) final 定数の型 定数名;
final int a = 10;
final int b;
▼コンパイルエラーの要因
1.一度初期化した定数に別の値を代入する
2.メソッド内で初期化した値に別の値を代入して変更する
12.定数の宣言方法
定数は、一度初期化した値は変えられない
初期化した値に別の値を代入するとコンパイルエラー
13.変数の宣言方法
▼変数の宣言ルール
1.利用する前に宣言しなければならない
2.データがと変数名のセットで行う
▼コンパイルエラーの要因
1.宣言していない変数に値を代入する
14.インスタンス変数の宣言の構文
インスタンス変数は、インスタンスごとのデータを保持するための変数
▼インスタンス変数の宣言ルール
1.宣言する場所はクラス定義の内側、メソッド定義の外側
アクセス修飾子 型名 変数名;
public int
public class Sample{
public int a; //インスタンス変数は、クラス定義の内側
public String b; //メソッド定義の外側で宣言する
public void test(){
//メソッド定義
}
}
15.static変数の宣言の構文
static変数とは、クラスに属するフィールドのこと
▼変数の違い
1.インスタンス変数はインスタンスごとに作られる変数
2.static変数はクラス単位で作られる変数
※インスタンスに作られる変数ではなく、static領域に作られる変数
▼static変数の特徴
1.複数のインスタンス間で同じ変数を共有される
2.あるインスタンスでの値の変更は別のインスタンスでも反映される
3.宣言する場所はクラスの内側、メソッドの外側
4.アクセス修飾子とstaticの順は逆でも大丈夫
アクセス修飾子 static 型名 変数名
static アクセス修飾子 型名 変数名
public class Sample{
public static int count; //static変数countの宣言
public static int price; //インスタンス変数priceの宣言
public void test(){
//メソッド定義
}
}
16.ローカル変数のスコープ
変数のスコープ(scope)とは、その変数が利用できる範囲のこと
▼変数のスコープルール
1.その変数を宣言した箇所以降
2.かつ宣言が含まれるブロック内のみ
3.スコープ外で変数を利用するとコンパイルエラー
【注意事項】
スコープの範囲は読みづらいため、16.のコードは何度も読んでスコープの範囲を認識できるまで鍛える。
17.配列
▼配列型変数のルール
1.配列型変数は配列インスタンス(又は「配列」)への参照を保持する
2.配列インスタンスは指定された個数の要素を持ち各要素にデータを保持できる
3.要素を指定するための添え字は「0」から開始される
※「1」ではないことに注意!
▼配列の種類(2種類)
1.プリミティブ型配列:各要素に値を保持する
2.オブジェクト型配列:各要素にインスタンスへの参照を保持する
▼配列型変数の宣言のルール
1.配列型変数は値を保持しない
2.配列インスタンスの各要素が値を保持する
3.値を保持するために配列型変数の宣言と配列インスタンスの生成を行う
▼配列型変数の宣言
要素のデータ型[] 変数名;
▼配列インスタンスの生成
変数名 = new 要素のデータ型[要素数]
▼配列型変数の宣言と配列インスタンスの生成
int[] = array; //in配列型変数の宣言
array = new int[3]; //配列インスタンスの生成、参照を変数に代入
int[] array = new int[3]; //上記記述を1行にした場合
▼上記記述時の注意事項
1.配列変数の宣言時には要素数は宣言しない int[3] arrayは誤り
2.配列インスタンスの生成時に要素数を指定する new int [3]で要素は3
3.カッコは角カッコで丸カッコではない
18.配列とその要素の初期化
▼配列の要素のデフォルト値
1.整数型 0
2.浮動小数点数型 0.0
3.文字型 \u0000(NUL)
4.真偽値 false
5.参照型 null
▼配列インスタンスの生成
要素のデータ型[] 変数名 = {要素のデータ, 要素のデータ,・・・}
▼初期化リストのルール
1.初期化リストは、初期化子「{}」で記述する
2.要素のデータをカンマ区切りで複数列挙して初期データを指定する
3.配列インスタンスの生成及び要素の初期化は変数の宣言と同時
※初期化リストを利用した配列インスタンスの生成及び要素の初期化を行う場合は複数の文に分割できない
int[] array;
array = {3, 5, 1};
//複数行は誤り
int[] array = {3, 5, 1}
//こちらが正しい記述。なお、配列の初期化では「new」は不要
問題19以降は後日記事を修正して追加する。
■学習時間
8/15
29:08-29:26 (17:33)
8/16
19:00-25:00(実質4時間)
第2章 29~62P 4時間
■学習内容
1.黒本 解答 7.3分
2.黒本 解説及び分析 180分
3.黒本 合計 約4時間
■振り返り
15日から黒本のみの学習に修正。入門書の基礎知識は8月中にテキストを使って聴講中。
未学習者はまずインプットに以下の学習時間を想定した方がよい。
予習 18日*3時間=54時間
講義 18日*5時間=90時間
復習 18日*3時間=54時間
合計 18日*11時間=198時間
これは私自身のケースだが、講義という補助がついた状態でこのくらいは必要と感じている。50時間の学習でSilverを合格した受験者はこのベースがあることが前提だと考えた方がよい。実際にプログラミングの基礎学習などにも私は時間を割いているので効率的な学習ではないがもっと時間がかかっている。
■今後の方針
黒本をメインで、解答解説の読解と知識の整理・理解に力を入れる。
紫本は時間があるときなどに流し読み程度にする。