
註釋(Comment)의 目的은 소스코드에 對한 說明을 하기 爲한 것이다。코드를 作成한 本人 뿐만 아니라 他人이 그 코드를 봤을 때도 理解하기 쉽도록 說明을 해야 할 必要가 있기 때문에 註釋을 使用한다。註釋은 컴파일 時 無視되기 때문에 演算結果에 反映되지 않아 프로그램에 影響을 주지는 않는다。
/*
範圍를 指定해 文段을 註釋處理 할 時
註釋을 길게 作成할 時에 使用한다。
*/
// 文章(行)을 註釋處理할 時
// 짧은 註釋을 作成할 時에 使用한다。
參考로、Eclipse에서 使用되는 註釋 短縮키는 다음과 같다。
(該當 文章 或은 文段에 註釋 記號가 自動으로 붙으며 註釋處理가 된다。)
行 註釋 短縮키 → ctrl + /
(解除도 同一)
範圍註釋 短縮키 → ctrl + shift + /
範圍註釋 解除 短縮키 → ctrl + shift + \ (windows)
註釋은 컴파일 時 코드 內容으로 認識되지 않고 無視되어 演算結果에 反映되지 않아 프로그램에 影響을 주지 않는다。但、사람이 코드를 理解하기 쉽도록 도와주기 爲해서 作成한다。
各々의 블록(class、method 等)들의 包含關係를 보여주며 理解를 빠르게 하기 爲해서이다。(可讀性)
變數(Variable)란 變하는 數를 意味한다。變數의 宣言은 메모리 割當이므로、變數는 메모리空間에 차지하는 하나의 房을 意味한다고 할 수도 있다。變數의 값은 프로그램 實行 途中 繼續 變할 수 있다。
反對로 常數(Constant)는 變하지 않는 數로 初期化 以後의 값은 變할 수 없다。
// 變數 使用 例示
int num1 = 11;
num = 22;
num = 35;
num = 80;
變數宣言은 메모리空間 割當을 意味하며
1. 크기가 Data type(資料型)에 依해 決定되고
2. 內容이 어떤 타입이 들어갈 것인지(int、float、double…)決定되는 것을 意味한다。
// 變數 宣言 例示 - 變數의 타입 + 變數名
int num1;
float num2;
char ch;
//變數의 宣言과 初期化가 同時에 이루어질 境遇
int num1 = 1;
float num2 = 3.0;
// 常數 宣言 例示
final double PI = 3.14;
int型 變數에 double型 타입을 넣을 수 없다。
自動 縮小 型變換이 안 된다。(注意!)
Data type(資料型) 9個
1byte = 8bit
2의8乘 → 256
2byte = 16bit
2의16乘 → 1024
整數를 表現하는 int資料型은 크기가 4byte로 32bit → 2의32乘이다。
符號表現을 除外한 31乘의 값을 計算하면
約 -21億~21億의 範圍 (正確히는 -2,147,483,648~2,147,483,647)가 表現이 可能하다。
(long型은 約 -9千2百京~9千2百京)
整數型 Data type(資料型)으로 4byte의 메모리空間을 割當받는 變數 num을 宣言한다。
int num;은 int(整數)型 타입의 num(變數名)變數를 宣言한다는 것으로、이것은 int타입의 4byte만큼을 이 變數를 爲해 메모리空間을 割當한다는 것이다。卽、num變數의 메모리空間이 4byte만큼 確保된다는 것을 意味한다。(메모리空間에 整數가 들어감)
char ch = 'a';
出力結果 : a
데이터타입에 맞춰서 表를 찾아 A(文字) → 數字 인코딩 / 數字 → A(文字) 디코딩된다。
a = 97、A = 65와 같이 1:1 매칭으로 約束되어있음 (標準)
"_" 空白(sp) 32、0=34、1=3
ASCII코드、Unicode表를 參考한다。
인코딩
a라는 文字가 char타입이라 컴퓨터가 알아 들을 수 있도록 ASCII코드(Unicode)표를 參考해 二進數로 變換되어 컴퓨터(cpu)에 傳達된다。
디코딩
컴퓨터가 가진 二進數를 데이터타입을 參考하여 같은 값을 가지고 있는 폰트를 찾아 畫面를 찾아 畫面에 出力한다。
왜 文字 「1」 의 코드 값 34가 메모리에 들어갔는데 出力할 때 다시 1이 나오는 것일까?
ASCII(아스키)코드
美國情報交換標準符號(American Standard Code for Information Interchange)、줄여서 ASCII(아스키)코드는 1960年代 美國에서 英文 알파벳 大小文字 52個와 10個의 數字、32個의 特殊文字、空白 等을 비롯해 95個의 出力 可能한 文字들로 總 128個로 構成되어있다。
Unicode(유니코드)
韓國語나 日本語、中國語 等 英語 外의 文字들을 表現하기 爲해 ASCII에 追加된 Unicode(UTF-8)가 使用되고 있다。Java는 Unicode表를 使用한다。
class CharTypeUnicode {
public static void main(String[] args) {
char ch1 = '헐';
char ch2 = '확';
char ch3 = 54736; // 文字「헐」의 유니코드 값
char ch4 = 54869; // 文字「확」의 유니코드 값
char ch5 = '0xD5D0';
char ch6 = '0xD655';
System.out.println(ch1 + " " + ch2);
System.out.println(ch3 + " " + ch4);
System.out.println(ch5 + " " + ch6);
}
}
結果畫面
헐 확
헐 확
헐 확
- 補數(complement)란 두 數의 合이 進法의 밑數가 되게 하는 數를 意味한다。
(10進數에서 6의 補數는 4、7의 補數는 3)- 컴퓨터에서는 陰의 整數를 表現하기 爲해서 2의 補數法을 使用한다。
2의 補數는 陽數 2進數의 1의 補數를 求한 後 거기에 1을 더해 陰數를 表現하는 方法을 意味한다。이 때 8비트를 넘어가는 第一 앞 자리의 數는 電算的으로 버려주게 된다。
2進數의 1의 補數는 비트를 反轉시켜 얻을 수 있다。(0→1、1→0)
1. 第一 앞에 符號비트를 1비트 使用한다。
(0→陽數、1→陰數)
하지만 +25와 -25를 더했을 때 0이 나와야하는데 符號비트만 바꾸면 0이 나오지 않는다는 問題가 생긴다。그래서 2의 補數法이 使用되기 始作했다。
2. 2의 補數法使用
(1의 補數 +1 → 第一 앞은 自動으로 符號비트가 맞춰짐)
int num1 = -10;
-5의 2進數 값은 2의 補數法에 依해 求한 結果로 「11111011」 으로 나온다。
計算方法은 다음과 같다。
00000101
+5의 1의 補數 : 11111010
1을 더함 (+5의 2의 補數) : 11111011
+5 : 00000101
-5 : 11111011
0 : 0000000
實數는 두 實數 사이에는 無限大의 實數가 存在한다는 特性이 있다。
0과 1사이에도、0과 0.5사이에도、0과 0.1사이에도 無限大의 實數가 存在한다。
하지만 컴퓨터에 演算을 爲해서는 無限한 實數를 有限한 메모라에 올리는 過程이 必須的이다。
그래서 實數 全體를 다 담을 수 없기 때문에 實數의 範圍를 定해서 最大값과 最小값을 주고 그 사이에 表現할 수 있는 값을 미리 指定해 두고 近似값으로 使用한다。
例를 들면 double(-10^324~10^308)의 範圍가 定해져 있다。
그렇기 때문에 實數에는 誤差가 存在할 수 밖에 없다。
整數를 2進數로 表現하는 方法과 實數를 2進數로 表現하는 方法이 判異하게 다르기 때문에 整數와 實數의 데이터타입을 나눌 수 밖에 없다。
→ 小數點이 固定되어 있다는 意味이다。
1.0124、0.5421、0.1234、0.2648
→ 小數點이 떠다닌다는 意味이다。
1.123x10^-1、1.234x10^-2、0.1 1x10^-1、0.001 1x10^-2 ……
3.4e3 → 3.4x10^3 (浮動小數點) = 3400.0
3.4xe-3 → 3.4x10^-3 (浮動小數點) = 0.0034