Webdeveloper_kim 2022. 1. 2. 14:46
728x90

과정평가형 정보처리 산업기사 교육과정의 두번째날이다.

오늘은 chapter 2 변수 에 대해 배웠다.

우선 chapter가 바뀌었으니 chap02 프로젝트를 추가한다.

새 자바 프로젝트 생성

 

변수의 정의

변수란 단 하나의 값을 저장할 수 있는 메모리 공간을 뜻한다.

메모리에서 주기억장치에 해당하는 것이 RAM, 보조기억장치에 해당하는것이 HDD, SSD이다.

보통 메모리라 하면 주기억장치에 해당되는 메모리를 사용한다 생각하면 된다.

내PC에서 우클릭 > 속성을 보면 컴퓨터의 스펙이  나온다.

또한 작업관리자에서 프로세스(현재 실행중인) 에서 각각의 프로세스가 메모리를 얼마나 차지하고 있는지 알 수 있다.

시스템 종류를 보면 보통은 64비트 운영체제 일 것이다.

또한 필자의 CPU는 3.20GHz라는 표기가 있다.

간략하게 풀어놓자면 64비트 운영체제라는 것은 CPU가 한번 연살할 때 최대 크기가 64비트라는 것을 의미한다.

3.20GHz는 32억 헤르츠를 의미하고 이는 CPU가 초당 연산(클럭)을 몇번하는지를 의미한다.

>즉 CPU가 최대크기 64비트의 연산을 초당 34억번 한다는 뜻이다.

 

변수

변수는 크게 정수형, 실수형, 문자형의 타입으로 나뉜다.

변수타입은 변수에 저장될 값이 어떤 타입인지를 지정하는 것이다.

저장하고자 하는 값의 종류에 맞게 변수의 타입을 선택해서 적어주면 된다.

이런 변수는 최초에 선언을 한 후 반드시 초기화 해주어야 하는데 그에는 이유가 있다.

>이유

모든 프로그램은 관리자에 의해 통제가 된다.

컴퓨터에서 프로세스가 수행이 되는것은 운영체제(OS)가 관리한다.

usb에도 펌웨어라는 운영체제가 있다(소규모의 운영체제)

한정된 메모리를 가지고 관리자가 통제해 여러 프로그램이 사용하기 때문에 전에 다른 프로그램에 의해 저장된 쓰레기값이 남아있을 수 있기 때문에 반드시 초기화를 해주어야 한다.

 

 

빨간 동그라미 -> 변수를 선언함과 동시에 age라는 변수를 25라는 값으로 초기화하였다.

파란 동그라미 -> 빨간 동그라미와 같은 의미이다

 

프로그래밍은 절대 혼자서 하는 일이 아니기 때문에 코드는 가독성이 높아야 한다.

때문에 변수또한 성의없는 변수가 아니라 약간 길더라도 용도를 알기 쉽게 지정하는 것이 좋다.

예를들면

int curPos = 0;  // 현재위치(current position)

int lastPos = -1; // 마지막위치(last postion)

이런 식으로 지정해 주어야 보는사람도, 나중에 확인 할 때도 편하다.

 

예제 2-1

우리가 이미 배워 알고 있는 사칙연산의 계산법이 그대로 적용되나 프로그래밍에서는 대입연산자가 추가된다.

대입연산자는 순서상 제일 마지막이다.

 

예제 2-2

 

두 변수의 값을 교환할 땐 임시 저장소로 사용될 변수(예제 2-2에서는 tmp)를 하나 추가해야 한다.(두 컵의 서로 다른 내용물을 바꾸는 것을 생각해보면 된다.)

또한 변수에는 명명규칙이 있다.

1. 대소문자 구분되며 길이에 제한이 없다.

2. 예약어(코딩시 보라색으로 나오는 것들)를 사용해서는 안된다.

3. 숫자로 시작해서는 안된다.

4. 특수문자는 '_'와 '$'만을 허용한다.

이는 지켜지지 않으면 오류를 불러오는 규칙들이다.

이외에도 필수는 아니지만 권장하는 규칙들이 있다.

1. 클래스이름의 첫 글자는 대문자로 한다.

ex) System.out.println(Math.PI);

System.out.println(Interger.MAX_VALUE);

2. 변수 이름은 소문자로 시작한다.

ex) x, y, tmp,value

3. method도 소문자로 시작한다.

4. 여러 단어를 이어 쓸 때 구분되는 단어는 대문자로 시작한다.

ex) HelloWorld

-> 이걸 단어 중간에 대문자가 낙타 혹처럼 나왔다 해서 카멜표기법이라 한다.

5. 상수의 이름은 모두 대문자로 한다. 여러 단어일 경우 _로 구분한다.

ex) PI , MAX_NUMBER

-> 예시 후자의 언더바를 사용하는 표기법을 스네이크표기법이라 한다.

이상 초록색의 규칙들은 코딩에 오류는 나지 않지만 개발자들사이에서 암묵적으로 지켜지는 규칙이다.

 

변수의 타입

변수를 선언할때 변수의 앞에는 반드시 그 변수의 타입(class)가 붙는다.

1. 기본형

논리형 : boolean

-> true와 false 중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다.

문자형 : char

-> 문자를 저장하는데 사용되며 변수에 하나의 문자만 저장할 수 있다.

정수형 : byte, short, int, long

->주로 int 가 많이 사용되며 왼쪽부터 순서대로 1, 2, 4, 8 byte의 크기를 갖는다

실수형 : float, double

->주로 double 이 많이 사용되며 실수형이기 때문에 출력될 때 반드시 소수점을 붙여 출력된다.(ex. 결과값이 3이여도 3.0로 출력된다.)

>>> 논리형을 제외한 자료형끼리는 서로 연산과 변환이 가능하다.

 

> 기본 자료형의 종류와 크기는 꼭 외워야 한다!!

 

2. 참조형

- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입을 일컫는다

> 기본형보다 압도적으로 많이 사용되며 예문에 자주 등장하는 String[]가 이에 해당한다.

 

 

1을 더했을 뿐인데 자릿수가 다르게 출력된다.

정밀도만 놓고 보면 double타입이 15자리, float가 7자리인것으로 보아 double타입이 더 정확하다.

 

리터럴의 타입과 접미사

일반적으로 알고 있는 '상수'라는 단어를 프로그래밍에서는 변수의 한 종류지만 변수랑은 달리 한번 값을 지정하면 다른 값으로 변형할 수 없다. 바로 위의 예제에서 val3이라는 변수가 상수에 해당한다.(final을 붙여서 선언함으로써 상수임을 보여준다.)

이렇게 상수라는 의미를 다른식으로 쓰고 있기 때문에 변수를 선언함과 동시에 초기화할때 쓰는 것은(위의 예제에서는 3.14, 1, 10) 리터럴이라 부른다.

변수의 타입에 따라 리터럴 또한 타입이 있고 접미사라는 것이 붙기도 한다.

> 정수형에서 0b는 2진법, 0은 8진법, 0x는 16진법을 알아보기 쉽게 표기한것을 의미한다. 100L 에서는 100이 long타입의 리터럴이기 때문에 붙는 것이고 나머지 타입에서는 접미사가 붙지 않는다.

>실수형에서 1.4f는 1.4가 float타입의 실수형 리터럴이기 때문에 붙는 것이고 double타입의 경우 생략한다.

타입의 불일치

 

변수와 리터럴의 타입과 크기를 잘 고려해 매칭하지 않으면 오류가 생긴다.

 

진법

진법이란 한 자리수에 표현할 수 있는 경우의 수를 의미한다.

2진법

binary digit(2진법)의 줄임말이 bit이다.

사람과 달리 컴퓨터는 신호가 들어오는 여부를 1과 0으로 표현하기 때문에 2진법을 사용해 계산을 한다. 그렇기 때문에 컴퓨터에서는 bit라는 단위를 쓰게 되는 것이다.

프로그래밍을 하면서 가장 많이 쓰는 진법은 2, 8, 16진법인데 16진법의 경우 10진법에 익숙한 우리가 쓰기에는 10~15의 숫자가 한 자리수에 표현하기에 불가능하니 각 A~F로 표기한다.

1 비트는 너무 작은 단위이기 때문에 8 bit = 1 byte 로 정의해서 byte라는 단위를 사용한다.

또한 4 byte = 1 word 로 정의하는데 word는 CPU가 한번에 처리할 수 있는 데이터의 크기를 말한다.

 

8진수는 2진수 3자리를, 16진수는 2진수 4자리를 각각 한자리로 표현할 수 있기 때문에 자리수가 짧아져서 알아보기 쉽고 서로 간의 변환방법 또한 매우 간단하다.

> 2진법 외에 8, 16진법을 많이 쓰는 이유

 

서로간의 변환방법 연습

CA[16]

>2진법으로 변환해보자

> 0000,0000[2]        : 자리수를 일단 먼저 나타내고

> 1100,1010[2]        : C와 A를 2진법으로 표현한다.

>11001010[2]          : 붙여주면 끝

 

67[8]

>2진법으로 변환해보자

>000,000[2]          : 자리수를 먼저 나타내고

>110,111[2]          : 6과 7을 2진법으로 표현

>110111[2]           : 붙여주면 끝

 

111001000[2]

>16진법으로 변환해보자

>0001,1100,1000[2]   : 16진법으로 변환이니 4자리수씩 맞춰서 끊어주고

>1,C,8[16]               : 각각 16진법으로 나타낸다.

>1C8[16]                : 붙여주면 끝

 

 

참고로 코딩 중에 빨간 밑줄이 쳐진다면 오류가 난 것이다. 빨간 밑줄에 마우스를 가져가면 오류의 원인이 무엇인지 설명이 되어있으니 참고하여 수정하면 된다.

 

오늘은 여기까지!

진법은 예전기억이 나서 조금 수월했던 것 같다. 그덕인지 오늘부터 본격적인 강의였음에도 변수의 타입, 리터럴의 타입을 제외하고는 난이도가 괜찮았던 것 같다.

전체강의를 시작하기 전에 사전 지식 평가를 했는데 16점으로 꼴등했다. 매일을 졸업은 정 반대로 하자는 마음을 갖고 마무리하는데 다음강의가 기다려진다.

 

728x90