Going my way

いいなと思ったことをメモしていきます。

いまさら聞けない基本過ぎて見逃しがちなJavaの基礎の基礎


Advertisements


Javaプログラマの勉強をしていて、実は基礎の基礎の部分の知識が曖昧だったことに気付いた。
ここで、今まで曖昧にしていた知識を一旦まとめてみようと思う。


■データ型について

データ型は、「基本データ型」と「参照型」に分かれている。
数値や文字などを意味するデータ型のことを基本データ型またはプリミティブ型という。

リテラルとは、ソースファイル内に直接記述した値のこと。

文字リテラル:文字1文字分。文字の前後を(')で囲む。
文字列リテラル:複数の文字をデータとして持つリテラルのこと。(")で囲まれたもの。

エスケープシーケンスとは、改行やタブなどを文字リテラルで表すときの文字のことをいう。

主なエスケープシーケンス一覧

\b バックスペース
\f フォームフィード
\n 改行
\r 復帰
\' シングルクオテーション
\" ダブルクオテーション
\\ バックスラッシュ

javaのコードでディレクトリを指定するときに「C:\\temp\\hoge」のように「\」を連続で書くのは、
エスケープシーケンスでバックスラッシュ(\)を表す表記が「\\」であるためである。

■変数について
メンバ変数とローカル変数

変数は記述する場所によってメンバ変数とローカル変数に分けることができる。
メンバ変数は「フィールド」や「プロパティ」と呼ばれる。

class Foo{
	メンバ変数の記述場所
	・インスタンス変数
	・static変数
	
	戻り値の型 メソッド(引数){
	
	}
}

インスタンス変数とは、インスタンスを生成して初めて利用できる変数のこと。
一旦生成されたインスタンス変数はそのオブジェクトが消去されるまで利用することができる。
static変数とは、プログラムの実行を開始した時点ですぐに利用することができる。
つまり、オブジェクトを作成することなく使うことができる。
static変数はメソッド内で宣言することはできない。
つまり、static変数はメンバ変数としてしか宣言できない。

一つのクラスから複数のオブジェクトを生成するとしても、static変数は1つしか生成されない。

class ClassA{
	//メンバ変数
	static int a = 20; //static変数 
	int b = 10;        //インスタンス変数
}

ローカル変数とは、メソッド内で局所的に利用される変数のこと。
メソッド内で利用するので、メソッドローカル変数ともいう。
メソッド内の特定のブロック内で宣言された変数をブロック変数という。
ブロックとは「{}」で囲まれたまとまりのことである。
引数もローカル変数の一種である.

class Foo{
	メンバ変数の記述場所
	・インスタンス変数
	・static変数
	
	戻り値の型 メソッド(引数){
	//ローカル変数の記述場所
	・メソッドローカル変数
	・ブロック変数
	}
}


メソッドローカル変数はメンバ変数と同じ名前にすることも可能だが、同じ名前にしたらメソッドローカル変数が優先される。

メソッド内で同じ名前のメンバ変数を使いたい時はthisキーワードを使う。

public void setX(int x){
	this.x = x;
}

このようにセッターを書くときに「this」と書くのは、メソッドローカル変数xを、同じ名前のメンバ変数xに代入するという意味。
thisを付けないと、xはメソッドローカル変数を指すことになる。

メンバ変数は自動的にデフォルト値に初期化されるが、ローカル変数は自動的に初期化されない。
なので、ローカル変数は明示的に初期化しないとコンパイルエラーが起こる。

メンバ変数のデフォルト値は以下の通り.

boolean false
byte    0
short   0
char    '\u0000'
int		0
long	0L
float	0f
double	0.0D
参照型	null

■equalsメソッド
Objectクラスで定義されているメソッドである。
参照型変数1.equals(参照型変数2)
デフォルトでは参照型変数1に格納されているアドレス情報と参照型変数2に格納されいるアドレス情報が等しいかどうかを判断する。つまり、2つの参照変数が同じインスタンスを参照しているかどうかを判断する。


ちゃんと勉強したい人は以下の書籍を参照してください。

徹底攻略 Java2 プログラマ教科書 Platform 5.0対応 (ITプロ/ITエンジニアのための徹底攻略)
須澤秀人/後藤裕乃
インプレスジャパン
売り上げランキング: 177788