🌊

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

2023/06/18に公開

今までは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
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 f = 0.245F; 

double = 8 byte = 64bit

charbyteよりメモリが大きいが、負数を含めないので、自動的に変換されない。
そのためにはキャストが必要だ。

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

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

intfloatに変換する場合、32bitの値が23bitの値であるsignificandに入るため、損失が生じる。

Discussion