변수는 말 그대로 변하는 수이다. 값을 넣을 수 있는 빈 그릇과 같다.



변수 선언하고 값 대입하기

변수를 사용하기 위해 어떤 형태의 자료를 저장할 것인지 정해야 한다. 이 형태를 변수의 '자료형'이라고 한다. 변수의 자료형을 선택했다면 변수의 이름도 정해주어야 한다. 이렇게 변수의 자료형을 선택하고 이름을 정하는 것을 '변수를 선언한다'라고 한다.


선언한 변수에는 자료형에 맞는 값을 대입할 수 있다.


코드

int level;

level = 10;

System.out.println(level);

int는 정수를 나타내는 자료형이고, level은 변수 이름이다.

= 기호는 프로그램에서는 '오른쪽 값을 왼쪽에 대입한다'는 의미로 사용한다.


결과



변수 초기화하기

코드

int level = 10;

System.out.println(level);

변수를 선언할 때 변수 값을 바로 대입할 수 있다. 변수에 처음 값을 대입하는 것을 '초기화'라고 한다. 

변수의 초기화는 변수 선언과 동시에 초기화를 할 수도 있고, 변수를 선언한 이후 대입할 값이 정해지는 시점에 초기화를 할 수도 있다.


결과


변수 이름 정하기

- 변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $, _만 사용할 수 있다.

- 변수 이름은 숫자로 시작할 수 없다.

- 자바에서 이미 사용 중인 예약어는 사용할 수 없다.


변수 이름은 프로그램에서 계속 사용하기 때문에 사용 목적에 맞게 의미를 잘 부여해서 만드는 것이 좋다. 

변수 길이에 제한이 없으므로 줄임말보다는 의미를 풀어서 쓰는 것이 프로그램을 작성하고 이해하는 데 편리하다.

카멜 표기법(camel notation) - 소문자로 시작하여 여러 단어로 만들 경우 중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용


미친짓 시작해본다. 어떤 식으로 프로그래밍을 공부하는 게 좋을까? 여러가지를 시도해봤지만 인강은 나와 전혀 맞지 않는다. 보다보면 졸림.. 그렇다고 강사님 자료만 파기에는 약간의 무리가 있어 나만의 공부방식을 찾던 중.. 책 한 권씩 독파해나갈 것! 그래서 오늘부터 하루 1권을 목표로 시작해본다. 


https://github.com/minimelody/java-basic-study

해당 공부를 하면서 정리한 깃허브 저장소


자바 설치하기

자바를 설치한다는 것은 자바 JDK를 설치한다는 뜻. JDK는 Java Development Kit의 줄임말로 자바 프로그램을 개발하는 데 필요한 라이브러리와 플랫폼이 포함되어 있다. 자바 프로그램을 실행하기 위해서는 자바 실행 환경인 JRE, Java Runtime Environment만 있으면 되지만, 자바 프로그램을 만들기 위해서는 반드시 JDK가 있어야 한다.


1. www.oracle.com/technetwork/java/index.html에서 다운로드. 사이트에 접속한 후 [Software Downloads → JavaSE] 메뉴를 클릭

2. Java 로고를 선택하고 'Accept License Agreement'를 클릭하고 컴퓨터 운영체제에 맞는 자바 설치 파일을 다운로드

3. 다운로드한 파일을 실행하고 Next. 자바가 기본으로 설치될 폴더는 C:\Program Files\Java\jdk-10.0.2

4. 사용자 정의 설치 창이 뜨면 [다음] 버튼을 눌러 설치를 계속 진행한다. 설치가 완료되면 Close


이클립스 설치하기

자바 프로그래밍을 하는 데 꼭 필요한 통합 개발 환경 IDE, Integrated Development Environment인 이클립스를 설치해야 한다. 이클립스를 사용하여 자바 코드를 작성하고 컴파일하고 실행할 수 있다.


1. www.eclipse.org에 접속하여 [Download]를 클릭하고 들어간 화면에서 [Download 64 bit] 버튼을 클릭

2. 설치 파일을 실행. 맨 위에 있는 Eclipse IDE for Java Developers를 선택한다. [INSTALL] 버튼을 클릭하면 이클립스가 설치된다

3. Licenses 창이 나오면 [Accept]를 누른다. 설치가 끝나면 [LAUNCH] 버튼을 눌러 이클립스를 실행

4. 이클립스를 실행하면 워크스페이스를 지정하는 창이 나타난다. 워크스페이스(workspace)는 개발할 프로그램이 저장될 디렉터리 위치이다. [Browse] 버튼을 눌러 작업할 공간인 워크스페이스를 변경할 수 있다.

* 워크스페이스를 변경하려면 [File → Switch Workspace → Other]에서 수정

5. 워크스페이스를 선택한 후 [Launch]를 누르고, [Welcome] 탭을 닫으면 작업 공간이 나타난다. 이제 자바 프로그래밍 시작!


http://itpangpang.xyz/140

본격 시작하기에 앞서 인코딩부터 맞춰줘야 겠다. 깃허브에 올리면서 한글 깨짐으로 다시 커밋했다.


'Hello, Java' 문장을 화면에 출력하는 프로그램 만들기

1. 첫 프로젝트 만들기

자바로 프로그램을 만들려면 먼저 프로젝트(project]를 생성해야 한다. [File → New] 메뉴를 누르고 [Java Project]를 선택한다. 프로젝트는 개발자가 만드는 하나의 프로그램 단위라고 생각하면 된다.

2. Project name : 항목에 first라고 입력. 이름을 적고 [Next] 버튼을 누르고, Create module-info.java file 체크 상자를 눌러 해제 후 Finish

* 프로젝트명은 낙타표기법(소문자로 시작, 구분마다 첫글자는 대문자)!

3. 첫 번째 클래스 만들기

자바 프로그램은 모두 클래스 기반으로 구성. first 프로젝트를 선택하고 오른쪽 마우스를 클릭하면 메뉴가 나온다. 먼저 패키지(package)를 만들어야 하므로 [New → Package]를 선택

4. 패키지 이름은 hello라 적고 [Finish]를 누른다. 패키지명은 항상 소문자

5. 패키지 아래에 클래스를 만든다. hello 패키지를 선택하고 오른쪽 마우스 버튼을 클릭해서 [New → Class] 메뉴를 선택

6. 클래스 이름은 HelloJava라고 정한다. public static void main(String[] args) 항목을 선택하여 main() 함수를 추가하고 [Finish] 버튼을 누른다. main() 함수란 프로그램의 첫 시작점을 의미

* 클래스명은 파스칼표기법(첫글자가 대문자, 구분마다 첫글자는 대문자)

7. main() 함수 내부에 적혀 있는 // TODO~ 문장을 지우고 소스 코드 작성

8. 컴파일하기

컴파일은 프로그래밍 언어를 기계어로 번역해 주는 과정. 이클립스는 빌드 자동화 옵션이 기본으로 설정되어 있어서 파일을 저장(Ctrl + S)하면 자동으로 컴파일된다.

* 빌드란 컴파일러가 소스 코드를 컴파일하여 실행 파일을 만드는 과정. .class 파일이 만들어진다.

* 빌드 자동화 옵션은 [Project - Build Automatically]에서 설정. 기본 값으로 선택되어 있으므로 그냥 사용

9. 프로그램 실행하기

프로그램을 실행하는 단축키는 Ctrl + F11이다. 반드시 빌드한 후 프로그램을 실행한다. 프로그램을 실행하면 Console 창에서 실행 결과를 볼 수 있다. 

* 중간에 Select resources to save 창이 나오면 [OK} 버튼을 누른다.


http://cofived.tistory.com/17

http://postitforhooney.tistory.com/entry/GitConfigEclipse-%EA%B9%83-%EC%84%A4%EC%A0%95-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0

두 포스팅의 도움으로 이클립스에서 깃허브에 프로젝트를 올리는 방법을 알았다. 아무리 공부를 해도 결국 나중에 또다시 까먹는다. 그래서 어디든 기억할 수 있는 곳을 만드는 것이 좋은데, 처음 학원 다닐 때는 깃허브 사용법을 잘 몰라서 티스토리에 정리를 했었다. 그러나 지금 와서 다시 보니 무슨 소리인지 하나도 모르겠다. 그래서 선택하게 된 것이 소스코드만 정리하는 깃허브이다.


주석으로 소스 코드 정보 표시하기

주석은 프로그램에 설명을 추가하거나 특정 코드가 컴파일되지 않도록 처리할 때 사용한다. 특히 소스 코드 설명을 주석으로 잘 작성해 놓으면 나중에 본인이나 다른 개발자가 프로그램을 볼 때 이해하기 쉽다. 주석은 한 줄로 표시할 수도 있고 여러 줄로 표시할 수도 있다.

- 한 줄 주석 표시하기 : 문장 앞에 // 표시를 하면 주석으로 처리되고 컴파일되지 않는다. 

- 여러 줄 주석 표시하기 : /*, */ 기호로 주석의 시작과 끝을 나타낼 수 있다. 


변수 선언하고 값 대입하기 

= 기호는 수학에서 오른쪽과 왼쪽이 같다는 의미이지만 프로그램에서는 '오른쪽 값을 왼쪽에 대입한다'는 의미로 사용한다.


변수 초기화하기

변수를 선언할 때 변수 값을 바로 대입할 수도 있다. 변수에 처음 값을 대입하는 것을 '초기화'라고 한다. 초기화는 언제 해야 할까? 변수 선언과 동시에 초기화를 할 수도 있고, 변수를 선언한 이후 대입할 값이 정해지는 시점에 초기화를 할 수도 있다.


변수 이름 정하기

변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $, _만 사용할 수 있다. 변수 이름은 숫자로 시작할 수 없다. 자바에서 이미 사용 중인 예약어는 사용할 수 없다. 사용 목적에 맞게 의미를 잘 부여해서 만드는 것이 좋다. 변수 길이에 제한이 없으므로 줄임말보다는 의미를 풀어서 쓰는 것이 프로그램을 작성하고 이해하는 데 편리하다. 변수 이름은 대부분 소문자로 시작하며 여러 단어로 변수 이름을 만들 경우 중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용한다.


정수 자료형

양수, 음수, 0을 나타내는 데 사용한다. byte형(1바이트), short형(2바이트), int형(4바이트), long형(8바이트)이 있다.

각 표현할 수 있는 수의 범위는

byte형은 -128 ~ 127, short형은 -32,768 ~ 32,767, int형은 가장 많이 사용하는 자료형으로 -2,147,483,648 ~ 2,147,483,647

long형은 -2^63 ~ 2^63-1이며 "long num = 12345678900L;"처럼 식별자인 L이나 l을 사용해야한다. int형 범위를 넘지 않는다면 식별자가 필요 없다.


문자 자료형 - char형(2바이트)

문자를 컴퓨터 내부에서 표현할 때 0과 1의 조합으로 나타내야 한다. 특정 정수값으로 약속한다. 문자를 정해진 코드 값으로 변환하는 것을 '문자 인코딩'이라고 한다. 반대로 코드 값을 다시 문자로 변환하는 것을 '문자 디코딩'이라고 한다. 가장 기본이 되는 문자 인코딩은 아스키 코드.

- 문자를 int형으로 변환하여 출력하면 그 문자에 해당하는 정수 값을 알 수 있다.

- 문자형 변수에 정수 값을 대입하면 그 정수 값에 해당하는 문자가 출력된다.

- 정수형 변수를 문자형으로 변환하여 출력하면 그 정수 값에 해당하는 문자가 출력된다.


유니코드 값을 직접 사용할 수 있다. 유니코드란 전 세계의 모든 문자를 처리할 수 있도록 만든 표준 문자 전산 처리 방식이다.

http://unicode.org/charts/PDF/UAC00.pdf


char형은 음수 값을 표현할 수 없다. 

- char형으로 선언한 변수에 음수 값을 대입하면 오류가 발생한다. 

- 음수 값을 대입한 정수형을 char형으로 출력하면 물음표(?)가 출력된다.


실수 자료형

float형과 double형이 있다. float형은 부호 1비트, 지수부 8비트, 가수부 23비트로 총 32비트(4바이트)를 사용한다. double형은 부호 1비트, 지수부 11비트, 가수부 52비트로 총 64비트(8바이트)를 사용한다. double형을 기본으로 사용한다. float형으로 대입되는 값은 F 또는 f를 숫자 뒤에 붙여서 식별해주어야 한다.

* 부동 소수점 방식 : 실수 값 0.1은 1.0x10^-1으로도 표현할 수 있다. 이처럼 가수 부분(1.0)과 지수 부분(-1)을 나누어서 실수를 나타내는 방식


논리 자료형 - boolean형(1바이트)

어떤 변수의 참(true), 거짓(false)의 값을 나타내는 데 사용한다. 


상수 선언하기

항상 변하지 않는 값을 '상수(constant)'라고 한다. final 예약어를 사용해 선언한다. 상수 이름은 대문자를 주로 사용하고, 여러 단어를 연결하는 경우에 _기호를 사용하면 좋다. 한 번 선언한 상수는 변하지 않기 때문에 선언과 동시에 값을 지정하는 것이 좋다. 가끔은 선언만 하고 사용하기 전에 값을 지정하기도 한다.


리터럴

프로그램에서 사용하는 모든 숫자, 문자, 논리값(true, false)를 일컫는다. 리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓인다.


형 변환이란?

형 변환은 크게 묵시적 형 변환(자동 형 변환)과 명시적 형 변환(강제 형 변환) 두 가지로 구별해서 생각할 수 있다.

1. 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.

2. 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.


정수 : byte(1바이트) → short(2바이트) / char(2바이트) → int(4바이트) → long(8바이트) → 실수 : float(4바이트) → double(8바이트)

화살표 방향과 반대로 형 변환을 하려면 강제로 변환해야 한다. long형이 8바이트이고 float형이 4바이트인데 자동 형 변환이 되는 이유는 실수가 정수보다 표현 범위가 더 넓고 정밀하기 때문이다. 화살표 방향으로 형 변환이 이루어질 때는 자료 손실이 없지만, 그 반대인 경우에는 자료 손실이 발생할 수 있다.


묵시적 형 변환 (자동 형 변환)

바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우

byte bNum = 10;

int iNum = bNum;  //byte형 변수 bNum 값을 int형 변수 iNum에 대입함

bNum의 크기는 1바이트이고 iNum의 크기는 4바이트이므로 자료 손실 없이 bNum에 들어 있는 값이 모두 iNum에 저장


덜 정밀한 자료형에서 더 정밀한 자료형으로 대입하는 경우

int iNum2 = 20;

float fNum = iNum2;

두 변수의 크기가 같은 4바이트라도 float형인 fNum이 더 정밀하게 데이터를 표현할 수 있으므로 실수형인 float형으로 변환


연산 중에 자동 변환되는 경우

int iNum = 20;

float fNum = iNum;

double dNum;

dNum = fNum + iNum;

fNum + iNum 연산에서 int형이 float형으로 변환되고, 두 변수를 더한 결과 값이 dNum에 대입되면서 double형으로 변환


명시적 형 변환 (강제 형 변환)

바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우

int iNum = 10;

byte bNum = (byte)iNum;  //강제로 형을 바꾸려면 바꿀 형을 괄호로 써서 명시해야 함

이 경우는 대입된 값 10을 1바이트 안에 표현할 수 있으므로 자료손실이 없지만,

int iNum = 1000;

byte bNum = (byte)iNum;  //-24

이 경우처럼 byte형이 표현할 수 있는 범위를 넘는 경우에는 자료 손실이 발생


더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우

double dNum = 3.14;

int iNum2 = (int)dNum;  //실수 자료형 double을 정수 자료형 int로 형 변환

실수의 소수점 이하 부분이 생략되고 정수 부분만 대입



하루 한 권 끝내기는 무리 ㅠ..

그저 매일 꾸준히 하는 것을 목표로 오늘은 여기서 끝!



프론트엔드

HTML, CSS 부터 시작

자바스크립트 - 바닐라 자바스크립트 (라이브러리가 없는)

 - 투두리스트

 - 인터랙션

jQuery, 리액트

백엔드

Node js, express

이를 통해 작은 서버를 만들어서 웹사이트를 구현



HTML5 Programming, CSS, JavaScript, 자바스크립트 객체지향 프로그래밍, jQuery, ECMAScript 6, Node.js, React, Vue.js

Java의 정석(jdk 1.8버전), 자바 객체지향, 자바 웹 프로그래밍(struts) - 개정판 : 프로젝트로 배우는 자바 웹 프로그래밍, 최범균의 JSP 2.3 웹 프로그래밍, 

코드로 배우는 스프링 웹 프로젝트, 최범균의 Spring 4.0, 토비의 Spring 3.1, 오라클, MySQL


진짜.. 공부할게 너무 많다 ㅠㅠ

그래도 일하면서 일도 배우고, 공부도 꾸준히 하다보면 

언젠가는 원하는 서비스도 척척 만들고, 원하는 방식으로 살 수 있지 않을까 ㅠ?


변수(variable)

'변하다'의 변과 '데이터'를 의미하는 수. 즉, 변하는 데이터
프로그래밍적 의미로는 데이터를 담을 수 있는 공간. 해당 공간의 담긴 값은 소스코드에 따라 변할 수 있다.


변수명 규칙
대소문자가 구분되며 길이 제한이 없음
예약어를 사용하면 안됨

- 예약어 : abstract, default, if, package, this, assert, do, goto, private, throw, boolean, double, implements, protected, throws, break, else, import, public, transient, byte, enum, instanceof, return, true, case, extends, int, short, try, catch, false, interface, static, void, char, final, long, strictfp, volatile, class, finally, native, super, while, const, float, new, switch, continue, for, null, synchronized

숫자를 사용해도 되지만 숫자로 시작하면 안됨
특수문자는 _(언더바)와 $만 허용
낙타표기법 - 처음은 소문자 구분자 단어의 첫 글자를 대문자
한글 이름 변수도 가능하지만 쓰지 않기를 권장
변수명만 보고도 데이터를 예측할 수 있도록 의미있는 이름으로 작성



자료형 - 변수 선언

자료형 변수명 ; : 메모리 상에 데이터를 저장할 수 있는 공간을 할당하는 것


boolean bool;    // boolean 데이터 타입을 가지는 bool이라는 변수


논리형 : true 또는 false만 표현하는 데이터형 - boolean (1Byte)


byte bnum;    // byte 데이터 타입을 가지는 bnum이라는 변수

short snum;    // short 데이터 타입을 가지는 snum이라는 변수

int inum;        // int 데이터 타입을 가지는 inum이라는 변수

long lnum;      // long 데이터 타입을 가지는 lnum이라는 변수


정수형 : 하나의 정수값을 표현하는 데이터형

- byte (1Byte) : -128 ~ +127
- short (2Byte) : -32768 ~ +32768
- int (4Byte) : -2147483648 ~ +2147483647
- long (8Byte) : -2^63 ~ +2^63-1


float fnum;        // float 데이터 타입을 가지는 fnum이라는 변수

double dnum;    // double 데이터 타입을 가지는 dnum이라는 변수


실수형 : 하나의 실수값을 표현하는 데이터형

- float (4Byte)
- double (8Byte)


char ch;    // char 데이터 타입을 가지는 ch라는 변수


문자형 : 한 개의 문자를 저장하는데 사용 - char (2Byte) : 0 ~ 65,535 (유니코드문자)


String str;    // String 데이터 타입을 가지는 str이라는 변수


문자열형 : 하나의 문자열을 저장하는데 사용

- String (참조형, 4Byte) : 자바에서 만든 특수한 형태의 자료형으로 데이터가 저장되어 있는 주소를 저장


※ 데이터 오버플로우 : byte 형에서 127+1을 하면 범위를 초과하는 경우를 뜻하는데 허용범위 최소값인 -128이 된다.



변수 초기화

생성된 변수의 값을 대입


int age = 20;

String ch = "기차";


생성과 동시에 값 대입


int age;

age = 20;


String ch;

ch = "기차";


생성 후 값 대입


int firstNum = 20;

int secondNum = 10;

int result;


result = firstNum + secondNum;

System.out.println(firstNum + "+" + secondNum + "=" + result);

result = firstNum - secondNum;

System.out.println(firstNum + "-" + secondNum + "=" + result);

result = firstNum * secondNum;

System.out.println(firstNum + "*" + secondNum + "=" + result);

result = firstNum / secondNum;

System.out.println(firstNum + "/" + secondNum + "=" + result);



컴퓨터 프로그램

<변수 선언> 자료를 저장할 변수(기억공간)를 할당받아 변수에 값을 저장하고, 

<대입문 : 변수 = 데이터;> 계산을 통해 새로운 값으로 수정해가면서 변수에 원하는 결과값이 저장되게 하는 것

- 구성 요소 : 상수, 변수, 연산자, 대입문, 선언문, 제어문, 함수 호출문


상수 : 데이터 값 자체

변수(variable) : 상수를 저장하는 기억공간

대입문 형식 : 변수에 상수(데이터)를 저장하는 데 사용하는 명령문



1비트(bit) : 전구 1개. 0 또는 1 두 가지 정보를 저장할 수 있는 최소의 자료 저장 단위

1바이트(byte) : 8비트(bit) 가지 데이터 표현 가능, 문자 1개를 표현하는데 사용


1KB = B

1MB = KB

1GB = MB

1TB = GB



C언어 자료 종류 (자료형 이름 - 기억공간 크기)

정수(int / 4B) : 소수점이 없는 숫자

실수(double / 8B) : 소수점이 있는 숫자

문자(char / 1B) : ''로 묶은 문자 1개

문자열 : ""로 묶은 1개 이상의 문자 (한글 1자는 최소 2바이트가 필요하므로 문자 상수가 못 됨)

* float, unsigned int 등의 자료형은 심화에서 확인!


예약어(reserved word, keyword) : C언어에서 특별한 의미로 사용하는 단어

- char, float, double, if, else, switch, case, default, return, break, int, for, while, do, continue, goto, void, sizeof, struct 등

- 식별자로 사용할 수 없다

- printf 등 C언어에서 제공하는 라이브러리 함수명은 예약어가 아니다. 단, 식별자로 사용할 수 있지만 함수 원래의 기능이 사라진다


식별자(identifier) : 변수명, 배열명, 함수명, 구조체명. 프로그램에서 이름으로 사용하는 것의 총칭

- A~Z, a~z, 0~9, 한글, 특수문자는 _(밑줄)만, 대/소문자 구별

- 첫 글자 숫자, 중간에 빈칸, 예약어는 안 된다

 

변수

방정식에는 이름들(x와 y)이 있고 그 이름에는 각기 값(데이터)이 담겨 있다는 것이다. 즉 그 이름들(x와 y)이 데이터를 표현하는 저장소이다.

마찬가지로 컴퓨터 과학에서는 데이터를 저장할 무언가가 필요한데, 변수가 바로 그 역할을 한다.


데이터형

방정식을 풀기 위해서는 그 변수들이 가질 수 있는 값의 종류를 지정해야 하는데 컴퓨터 과학에서는 이것을 데이터형이라고 부른다. 

프로그래밍 언어에서 데이터형은 미리 정해진 특성을 가진 값들의 집합이다. 데이터형은 정수, 부동 소수점 숫자, 문자, 문자열 등이 있다. 

컴퓨터 메모리는 0과 1로 가득 차 있다. 프로그램을 작성할 때 0과 1로만 답을 제시하기가 어려워 프로그래밍 언어와 컴파일러는 데이터형을 제공한다.


  • 시스템 정의 데이터형
원시 데이터형이라고도 부른다. 많은 프로그래밍 언어에서 제공되는 원시 데이터형에는 int, float, char, double, bool 등이 있다. 
각각의 원시 데이터형에 할당된 비트 수는 프로그래밍 언어, 컴파일러 그리고 운영체제에 따라 다르다. 같은 원시 데이터형이라고 해도 언어마다 다른 크기를 사용한다. 데이터형의 크기에 따라 최대로 표현할 수 있는 값의 범위도 달라진다.

  • 사용자 정의 데이터형
시스템 정의 데이터형으로 충분하지 않을 때 사용자가 직접 데이터형을 정의할 수 있게 해준다. C/C++의 구조체와 Java의 클래스가 좋은 예이다.


+ Recent posts