何かの資格を取ろうということで、Java Silverの取得を目指す。
ここには、独学で勉強した際の記録
Javaの基礎
変数の命名
使用できる文字
ただし、数字は2文字目以降で使用可能
- アルファベット(a-zA-Z)
- 数字(0-9)
- アンダースコア(_)
- ダラー($)
プリミティブ型(基本データ型)と参照型
プリミティブ型(基本データ型)
型 | 初期値 | ラッパークラス |
---|---|---|
boolean | false | Boolean |
char | '\u0000'(空文字) | Character |
byte | 0 | Byte |
short | 0 | Short |
int | 0 | Integer |
long | 0 | Long |
float | 0.0f | Float |
double | 0.0d | Double |
参照型
プリミティブ型(基本データ型)以外の型すべて
例えば、オブジェクト型、列挙型、配列型がある。
また、初期値として「null」が指定される。
- String
- Date
- Integer
- ArrayList
- ...
double型の 0 除算
- dublbe > 0 の場合、「Infinity」
- dublbe = 0 の場合、「NaN」
- dublbe < 0 の場合、「-Infinity」
開始メソッドmain()について
String配列型の引数を1つ定義する必要がある
可変長引数(String... v)は配列と同等の扱いになる
public static void main(String args[]) {}
public static void main(String[] argv) {}
public static void main(String... v) {}
// 実行時エラーになる
public void main(String args[]) {}
配列
配列の宣言
配列の宣言には2つの表記があり、どちらでも構わない
また多次元配列の場合、併用も可能
// 表記1
int[] num;
// 表記2
int num[];
// 多次元:表記1
int[][] num;
// 多次元:表記2
int num[][];
// 多次元:表記1と表記2の併用
int[] num[];
配列の生成
配列変数を宣言し、配列を生成せずに値設定処理を記述した場合は、コンパイルエラー
int[] num;
// → エラーになる
num[0] = 111;
ArrayListクラス
java.utilパッケージ配下のため、import文が必要
左辺と右辺の「<>」のデータ型を合わせる必要がある
「<>」のデータ型として指定できるのは、参照型のみ
// OK
ArrayList<Integer> array = new ArrayList<Integer>();
ArrayList array = new ArrayList();
ArrayList<Integer> array = new ArrayList<>(); // ダイヤモンド演算子
ArrayList<Integer> array = new ArrayList<Integer>(10); // 初期サイズ10のリストを生成
// コンパイルエラー
ArrayList<int> array = new ArrayList<int>(); //基本データ型たのため
ArrayList<String> array = new ArrayList<Integer>(); // 右辺と左辺のデータ型が異なるため
ArrayList<Integer> array = new ArrayList<String>(); // 右辺と左辺のデータ型が異なるため
クラス変数、インスタンス変数
-
クラス変数
1つのクラスで1つ作成され、すべてのオブジェクトで共有される -
インスタンス変数
作成されたオブジェクト毎に作成され、オブジェクト毎に異なる
class Hoge {
// クラス変数
private static int v1;
// インスタンス変数
private int v2;
}
演算子
// ToDo 表示自分で起こしたい
http://www.kusa.ac.jp/~kajiura/java/console/operators.htm
オーバーライドとオーバーロード
-
オーバーライド
親クラスのメソッドを子クラスで再定義すること、子クラス上で親クラスのメソッドを上書きすること -
オーバーロード
同じメソッド名、戻り値の型で引数の数、型が異なるメソッドを複数定義すること
継承
abstractクラス、interfaceクラス
-
abstractクラス
extendsキーワードで継承する
抽象メソッドは、抽象クラス内でしか定義できない -
intarefaceクラス
インスタンス化できない
implementsキーワードで実装する
インターフェイスを実装したクラスは、インターフェイスで定義されたメソッドをすべてオーバーライドする必要がある。
オーバーライドしない場合は、そのクラスを抽象クラスで定義する必要がある
例外処理
例外クラス
Object
┗ Throwable
┠ Error
┗ Exception --------------------- checked例外(検査例外)
┗ RuntimeException ------- unchecked例外(非検査例外)
checked例外(検査例外)
例外処理:必須
- Errorクラス及びそのサブクラス
- RuntimeExceptionクラス以外のExceptionのサブクラス
Errorクラスのサブクラス例
- StackOverflowError
- NoClassDefFoundError
RuntimeExceptionクラス以外のExceptionのサブクラス例
- IOException
- FileNotFoundException
unchecked例外(非検査例外)
例外処理:任意
- RuntimeExceptionクラス及び、そのサブクラス
RuntimeExceptionクラスのサブクラス例
- ArrayIndexOutOfBoundException
- NullPointerException
制御処理(条件分岐、繰り返し)
if文
処理分が1文の場合のみ、「{ }」は省略可能
for文
初期化文と更新文は複数記述可能かつ省略可能
ただし、条件文は1つのみ記述可能
各文は省略できるが、「;」は必須
処理分が1文の場合のみ、「{ }」は省略可能
for(初期化文; 条件文; 更新文) { }
// 各文を省略
for(;;) { }
while文
処理分が1文の場合のみ、「{ }」は省略可能
do-while文
処理分が1文の場合のみ、「{ }」は省略可能
switch文
switch文の式には、下記のデータ型のみが利用できる
また、基本データ型については、そのラッパークラスも利用可能
- byte
- char
- short
- int
- enum
- String
continue文、break文
-
continue文
continue文以降の処理実行せず、次の繰返し処理を継続実行する -
break文
実行中の繰り返し処理を抜ける