본문 바로가기

IT自主学習 (2023.05.23~)/Java(2023.05.23~)

プログラミング自主学習 23日目 変数

今まではYoutube '생활코딩’を通して、とても浅く、ざっくりでJavaを勉強してみた。

次は、800pの本より、知識を深まりより様々な例を書き打つしつつ、基本を充実にする。

 

新しく習得した知識

1章 Javaスタート

・Eclipseのworkspaceが作成されるにつれ、.metadataフォルダーも自動的に作成される。

workspaceでのオプションが記録されるフォルダーであり、Eclipseを初期設定に戻したい場合は、

そのworkspaceの.metadataフォルダーを削除すればいい。

 

・他のworkspaceを呼び出したい場合、File->Switch Workspaceを通して、簡単に変更できる。

 

・クラスファイル名は必ずキャピタルレターにする。

 

2章 変数

変数とは一つの値を保存できるメモリ空間のことである。

変数の名前メモリアドレスの名前でもあるため、プログラムは変数の名前を通して、メモリアドレスにアクセスする。

 

【変数の作名法則】

1. 最初の字は、文字、$、_であり、数字にはできない。

例)1v, @speed, #$value

2. 最初の文字は英語の小文字で、意味を区別する際は大文字にする

例)maxSpeed, firstName

3. 予約語にはできない。

例)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

1. 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

(符号)(仮数部)(指数部)

 

1. 同じメモリ容量でもより広い範囲が表現できる。

2. eあるいはEは10nを意味する。

例)int A = 3000000; double B = 3e6; float C = 3e6f;  

 

 

・float = 4 byte = 32bit 

変数に値を保存する際には必ずFを付ける。

例)float A = 0.245F; 

・double = 8 byte = 64bit 

 

【変数のキャスト】

・charはbyteよりメモリが大きいが、負数を含めないので、自動的に変換されない。

そのためにはキャストが必要だ。

 

・演算は基本的に同じデータ型のOperandのみ行われるため、異なる場合、データーがより大きなタイプに変換される。

例)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に入るため、損失が生じる。