読者です 読者をやめる 読者になる 読者になる

明解Java入門編 第5章まとめ

基本型

Javaで利用出来る型を大別すると基本型と参照型とに分かれる。
基本型はさらに2つにわかれる。

数値型

整数を表す5種類の整数型と実数を表す2種類の浮動小数点型がある。

論理型

論理値を表す論理型(boolean)は真偽いずれかの値を表現する型。

型とビット

式には型があり、型と値が同じであれば記憶域上の内部表現も同じものになる。
内部表現は0または1の値を持つデータ単位であるビットの集まりである。
値を表現するためのビットの個数や個々のビットの意味は型によって異なる。

整数型

有限範囲の連続した整数を表現する型。
5種類ある
char byte short int long
これらの型では小数点以下の部分を持つ実数は表せない。

char型

文字を表すための型。
非負の値しか表せない。
0と正の値を表現する符号なし整数型。

byte型/short型/int型/long型

整数を表すための型。
負の値,正の値を表現する符号付き整数型。
各型の表現可能値が異なるのは構成ビットが異なるため。
これらの型ではビット数の多い型ほど表現範囲も広くなる。

byte

1バイト(8ビット)の整数。1バイトのデータを表す際利用。

short

短い整数。小さな値しかとり得ないことがわかっていて、記憶域を節約したい場合利用。

int

整数型の中で最も基本的な型。通常これを利用。

long

長い整数。int型では表現できない大きな値が必要な場合利用。

整数リテラル

整数型の定数を表す。
6種類ある。
・10進整数リテラル(int型/lomg型)
 10や57といった日常で使う数字

・8進整数リテラル(int型/long型)
 先頭に0をつけ2桁以上で表記する
 
・16進整数リテラル(int型/long型)
 先頭に0xまたは0Xをつけ表記する
 A~Fの大文字小文字は問わない

整数接尾語

lまたはLを末尾につけた整数リテラルの型はlong型になる。

整数の内部

符号ビット:0
0または正
符号ビット:1

負の値は2の補数表現という表現法で表される。

浮動小数点型

小数点以下の部分を持つ実数を表すのが浮動小数点型。
表現範囲は大きさと精度の両方から制限を受ける。
float
double

浮動小数リテラル

57.3のように実数を表す定数のことをいう。
10進表記と16進表記が可能。

浮動小数点接尾語

型を指定する。
float型:fとF
double型:dとD
指定しない場合double型とみなされる。

論理型(boolean型)

真を表すtrueと偽を表すfalseのいずれかの値を持つ。
足したり引いたり割ったりできない。
以下の文脈で使用可。
・if文の制御式
・do文,while文,for文の制御式
・条件演算子?:の第1オペランド

「文字列+論理値」あるいは「論理値+文字列」の演算を行うと論理型の値が"true"もしくは"false"に変換された上で連結される。

演算と型

int型同士の算術演算・double型同士の算術演算によって得られる値の型はオペランドと同じ型になる。

二項数値昇格

算術演算の対象となるオペランドの型が異なる時、小さい方の型のオペランドはより大きいほうの型に変換された上で演算が行われる。
(大きいとは余裕があるという意味)

二項数値昇格における型変換

・一方のオペランドがdouble型ならば他方をdouble型に変換する。
・そうでなく、一方のオペランドがfloat型ならば他方をfloat型に変換する。
・そうでなく、一方のオペランドがlong型ならば他方をlong型に変換する。
・そうでなければ、両オペランドをint型に変換する。

数値の徐算における商を実数値として求めるためには少なくとも一方のオペランド浮動小数点型でなければならない。

キャスト演算子

(型)x:xを型に変換した値を生成。

基本型の縮小変換

より小さい型への値の代入にはキャストが必要である。

種類

short→byte,char
char→byte,short
int→byte,short,char
long→byte,short,char,int
float→byte,short,char,int,long
double→byte,short,char,int,long,float

縮小変換には原則としてキャストが必要。

例外

代入の右辺の式や初期化子がbyte,short,char,int型の定数式で、代入先あるいは初期化先の変数の型がbyte,short,charであって、定数式の値が変数の型で表現できる場合、基本型の縮小変換が自動的に行われるのでキャスト不要である。(定数式に限られ、変数であれば必ずキャストが必要)
浮動小数点型はこのような規則がない。

変換に伴い数値の大きさの情報や精度を失うことがある。

基本型の拡大変換

代入あるいは初期化の際に自動的に行われる。キャスト不要。

種類

byte→short,int,long,float,double
short→int,long,float,double
char→int,long,float,double
int→long,float,double
long→float,double
float→double

数値の大きさに関する情報は原則失われない。
intあるいはlongの値からfloatへの変換、longの値からdoubleへの変換については精度を失うことがある。
この場合浮動小数点数の変換結果は最も近い値に丸められた整数値となる。

基本型の拡大変換と縮小変換

byteからcharへの変換ではbyteは基本型の拡大変換によりintへ変換され、その後基本型の縮小変換によりintからcharへと変換される。

繰返しの制御

繰返しの判定基準とする変数には浮動小数点数ではなく整数を使用する(浮動小数点数がすべての桁の情報を失うことなく表現できるとは限らないため)。

拡張表記

\を先頭にした文字のならびによって単一の文字を表す表記法。
文字リテラルや文字列リテラルで使用する。

\b 後退:表示位置を直前の位置へ移動する
\f 書式送り:改ページし次ページの先頭へ
\n 改行:改行し次の行の先頭へ
\r 復帰:現在の行の先頭位置へ
\t 水平タブ:次の水平タブ位置へ
" 文字":二重引用符
\' 文字':単一引用符
\ 文字:バックスラッシュ
\ooo oooは8進数:8進数でoooの値を持つ文字
Unicode拡張\uhhhh hhhhは16進数:16進数でhhhhの値を持つ文字