プログラミング自主学習 23日目 変数
今まではYoutube '생활코딩’を通して、とても浅く、ざっくりでJavaを勉強してみた。
次は、800pの本より、知識を深まりより様々な例を書き打つしつつ、基本を充実にする。
新しく習得した知識
1章 Javaスタート
・Eclipseのworkspaceが作成されるにつれ、.metadata
フォルダーも自動的に作成される。
workspaceでのオプションが記録されるフォルダーであり、Eclipseを初期設定に戻したい場合は
そのworkspaceの.metadataフォルダーを削除すればいい。
・他のworkspaceを呼び出したい場合、File->Switch Workspaceを通して、簡単に変更できる。
・クラスファイル名は必ずキャピタルレターにする。
2章 変数
・変数とは一つの値を保存できるメモリ空間のことである。
・変数の名前はメモリアドレスの名前でもあるため、プログラムは変数の名前を通して、メモリアドレスにアクセスする。
変数の作名法則
-
最初の字は、文字、$、_であり、数字にはできない。
例)1v, @speed, #$value -
最初の文字は英語の小文字で、意味を区別する際は大文字にする
例)maxSpeed, firstName -
予約語にはできない。
例)class, true
Primitive Type
値が変数に直接保存される。
整数タイプ
目に見える字➡ASKⅡ、Unicode ➡binary
byte
= 8bit = -2の7条~(2の7条-1)➡ -127~128
boolean
=1byte = 8bit = true or false
char
= 2byte = 16bit = 2の16条-1
1.Unicodeをマッピングする整数を保存する。それをコンピューターはUnicodeから文字に出力する。また、Unicodeのマッピングナンバーが0から始まるため、負数は扱わない。
2.''は入力できない。' 'はできる。目には見えないがspaceも一つの文字であるためだ。
3.簡単に言えば、一つの文字のみ扱い、その場合は基本的にシングルクォーテーションを使う。
4.シングルクォーテーションがない場合、(Unicodeの範囲)と16新法(Unicode)でも保存できる。
char c1 = 'A';
char c2 =65;
char c3 = \u0041;
入力時、2進法では同じく00000000 01000001になるため、全部文字リテラルAに出力される。
5.'A','가'のようにcharは文字型リテラルをセーブできる。文字型リテラルはUnicodeに保存されるため、コンピューターでは0~65535の整数でもある。。
したがって、intとlongでも文字リテラル自体は入力できる。
short
= 2byte = 16bit = -2の15条~(2の15条-1)➡ -32,768~ 32,767
int
= 4 byte = 32bit = -2の31条~(2の31条-1)➡ -2,147,483,648 ~ 2,147,483,648
8進法の値と16進法の値でも保存することができる。
int number = 10;
int octNumber = 012;
int hexNumber=0xA;
int binNumber = 0b1010;
10進法の整数に変換すれば全部10である。
long
= 8byte = 64bit = -2の63条~(2の63条-1)
金融業、宇宙産業など大きい数字を扱う際に使われる。
値を保存する際には必ずLを付ける。
long a = 20L ;
long b = 1000000000000000L;
実数タイプ
**> + m x 10n
(符号)(仮数部)(指数部)
**
- 同じメモリ容量でもより広い範囲が表現できる。
- eあるいはEは10nを意味する。
int a = 3000000;
double b = 3e6;
float C = 3e6f;
float
= 4 byte = 32bit
変数に値を保存する際には必ずFを付ける。
float f = 0.245F;
double
= 8 byte = 64bit
char
はbyte
よりメモリが大きいが、負数を含めないので、自動的に変換されない。
そのためにはキャストが必要だ。
演算は基本的に同じタイプのみ行われるため、異なる場合、データーがより大きなタイプに変換される。
int intValue = 1;
double doubleValue = 0.1
double result = intValue + doubleValue;
しかし、int
よりメモリが小さいbyte
,char
,short
は演算子があれば、自動的にint
に変換される。
byte byteValue1 = 1; byte byteValue2 = 3;
byte byteValue3 =byteValue1 + byteValue2 (x)
int intValue = byteValue1 + byteValue2 (o)
charの場合はその過程でunicodeの整数に変換される。
整数を実数に変換する際には精密度損失に気を付ける。
int
= 4byte = 32bit
float
= 1bit+ 23bit (significand)+ 8bit (exponent)=32bit
double
= 1bit + 52bit(significand) + 11bit(exponent)=64bit
int
をfloat
に変換する場合、32bitの値が23bitの値であるsignificandに入るため、損失が生じる。
Discussion