-
11일차 - 자바의 변수 및 상수, 자료형과 형 변환AI 솔루션 개발자과정(Java, Python) 2022. 10. 24. 17:25
파이썬은 인터프리터 언어이고, 자바는 컴파일 언어이다.
- 인터프리터 : 한줄 씩 번역하여 기계에게 보내주는 것
- 컴파일 : 인간이 작성한 프로그래밍 언어를 파일 째로 번역하여 기계에게 보내주는 것
인터프리터의 특징으로는 번역과 실행이 동시에 일어나기 때문에 그때 그때 바로 수정이 가능하다.
대화형 셀이라고도 부른다.
컴파일의 특징으로는 코드작성이 끝나면 무조건 컴파일을 해야한다. 코드의 길이가 길다면 컴파일시간도 오래걸린다.
하지만 미리 컴파일이 되어 있다면 실행이 빠르다. 이미 기계어로 번역기 끝났기 때문.
컴퓨터의 운영체제 및 bit에 따라 실행여부가 갈린다. 각 운영체제 마다 인식하는 방법이 다르고, 비트마다 제한되는 것이 다르기 때문이다.
자바 버추얼 머신(Java Virtual Machine)
인터프리터 방식으로 컴퓨터 위에서 바이트코드를 실행할 수 있도록 한다.
JVM은 운영체제가 다르더라도 동작한다.
자바 컴파일러
자바 소스코드를 자바 클래스 파일(바이트 코드)을 만들어서 변환한다. 이 파일을 자바 버추얼 머신이 구동할 수 있게 한다.
자바 런처
자바 프로그램과 자바 버추얼 머신을 처음 구동하는 소프트웨어이다.
클래스 파일을 대상으로 구동을 시작한다. (컴파일된 코드파일)
프로그램의 골격과 구성
클래스와 메소드로 구분되며, 중괄호를 이용하여 구분한다.
문장의 끝에는 세미콜론(;)을 붙여 문장의 끝임을 표시한다.
프로그램을 실행하면 클래스의 메소드 내부의 문장들을 순차적으로 실행한다.
System.out.println() 의 괄호 안에 출력할 내용을 큰따옴표(")로 감싸서 표시한다.
System.out.println() 의 내용 출력 후 자동으로 개행된다.
주석
파이썬의 주석은 #을 앞에 붙이면 주석처리가 되지만, 자바의 주석은 /* 으로 표시한다. 이를 블록 단위 주석 이라고 한다.
주석의 처리 영역 내부에는 어떠한 내용도 들어갈 수 있으며, *를 붙여서 주석을 사용하고 있음을 나타낼 수 있다.
주석의 처리 영역 끝부분에 */를 붙여 주석의 종료를 나타내야한다.
// 를 이용하여 행 단위 주석을 사용할 수 있으며, 파이썬의 주석처럼 이용할 수 있다.
들여쓰기
파이썬의 들여쓰기는 필수적인 요소였다. 함수나 반복문 조건문 클래스 TRY구문 등등 다양하게 사용되었고 필수로 사용하여야 했지만, 자바의 들여쓰기는 선택사항이다.
자바는 중괄호를 이용하여 영역을 구분하기 때문에 필수적인 사항은 아니나, 영역구분 및 가독성을 위해서 사용하는것이 좋다.
자바 개발 환경
- 1. 이클립스 - 가장 대중적이다.
- 2. 인텔리제이 - 부분 유료화
앞으로 사용할 환경은 이클립스이다.
자바 JDK설치 및 환경변수 설정하기
자바는 오라클 다운로드 페이지(https://www.oracle.com/java/technologies/downloads/)에서 다운로드 받을 수 있다.
각 운영체제에 맞는 인스톨러를 다운로드 받아서 설치하면 된다.
파이썬과 달리 설치할 때 환경 변수 설정을 하는것이 아니라 설치 후에 따로 환경변수 설정을 하여야 한다.
환경 변수 설정 관련해서는 블로그(https://penguingoon.tistory.com/280)를 참고 한다.
이클립스 설치하기
이클립스 홈페이지 (https://www.eclipse.org/downloads/) 에서 바로 다운로드 가능하다. 아나콘다와 마찬가지로 운영체제에 따라 자동으로 변경되니 그냥 다운로드 받으면 된다.
인스톨러를 실행하고 처음 나온 화면에서
첫번째를 선택하면된다. 다음페이지에서 사용할 자바 버전과 경로를 선택해야 하는데,
자동으로 설정되니 그냥 넘어가면 된다.
자바의 변수
파이썬의 변수는 선언과 동시에 값을 저장해야 한다. 선언만 해두면 NameError가 나기 때문이다.
하지만 자바는 변수의 선언만 따로 해둘 수 있다.
자바의 변수에 대입하는 것을 변수의 초기화 라고 한다.
변수의 이름을 짓는데 있어서의 제약사항
- 자바는 대소문자를 구분한다.
- 변수의 이름은 숫자로 시작할 수 없다.
- $와 _이외의 특수문자는 변수의 이름에 사용할 수 없다.
- 키워드는 변수의 이름으로 사용할 수 없다.
자바의 자료형
자바에서 기본적으로 제공하는 자료형이라 하여 '기본 자료형(Primitive Data Type)'이라 한다.
그 외의 자료형은 참조 자료형이다.
정수의 표현
컴퓨터에서 숫자를 표현할 때, 부호( + , - )부터 표시하는데, 양수(+)면 0 음수(-)면 1을 쓰고, 나머지 비트들은 값의 크기를 결정한다.
위에 있는 자바의 자료형 데이터를 보면, 1바이트는 8비트이고, 컴퓨터가 쓰는 2진수 체계에서는 1바이트로 -128 부터 127까지의 숫자를 표현할 수 있다.
음의 정수를 표현하는 방법.
양의 정수 2진수 표현에 2의 보수를 취한 결과를 음의 정수로 표현한다. (모든 수를 0과 1을 바꾼다.)
2의 보수를 구한 결과값에 1을 더하면 1이 되는데 이 올림 수를 버린다. (양수와 음수의 합은 0이다.)
0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 3을 양수로 표현하면 00000011이고, 이를 음수로 표현하면 2의 보수를 구한다.
3의 2의 보수는 11111100이고, 여기에 1을 더하면 -3을 표현한 것이다.
양수 3과 음수 3을 더하면 1과 00000000이 된다. 이때 올림수 1을 버리기에 0이 된다.
실수의 표현
정수와 달리 실수는 오차없이는 표현이 불가능하다.
위의 예제와 같이 실수로 이루어진 변수 2개를 지정하고, 두 변수를 더하기 했을대의 결과값은 우리가 아는 결과와 다르다.
컴퓨터는 1과 0으로 이루어진 2진수를 사용하는데, 실수의 경우 소숫점자리수가 너무 많이 늘어난다.
컴퓨터는 자료를 간략하게 표현하기 위해 최대한 가까운 실수의 표현이 저장되는데, 이때 오차가 발생하게 된다.
정수의 표현 0 = 0 은 불데이터로 True가 출력된다.
하지만 실수 0.0 = 0.0 은 False가 출력될것이다. 소숫점이하 자리에서 오차가 생겼기때문이다.
이와 관련되서 참고할만한 영상이 있다. 잘 설명되어 있어 이해가 쉽다.
(https://youtu.be/-GsrYvZoAdA)
자바의 기본 자료형
정수 데이터를 선택할 때는 short형 와 int형 변수 중 하나를 선택해야 하는데,
자바는 int를 기본 자료형으로 설정되어 있다.
자바는 실수 데이터를 선택할 때, double이 기본 자료형으로 설정 되어 있다.
자료형의 선택 기준은 정밀도인데, double이 float보다 바이트가 크기 때문이다.
문자 자료형
자바의 문자 자료형은 char이다.
자바는 문자를 2바이트 유니코드로 표현한다.
작은 따옴표로 묶어서 하나의 문자를 표시한다.
문자의 저장은 유니코드 값의 저장으로 이어진다.
유니코드는 문자 하나 하나에 숫자가 지정되어 있다.
char는 문자 하나를 나타내는 자료형이다.
문자 하나를 표현할 때는 따옴표 하나로 문자 하나를 묶은다.
문자 두 개 이상을 붙여서 표현할 때는 큰따옴표를 사용한다.
이때는 자료형도 다르다.
불 자료형
파이썬에서 불 자료형 참과 거짓를 표현할 때는 첫 글자는 대문자, 나머지는 소문자로 표현하지만,
자바의 불 자료형은 모두 소문자로 표시한다.
상수
자바에서 말하는 상수란?
- 변수에 값을 딱 한번만 할당할 수 있으면 그것은 상수이다.
- 한 번 할당된 값은 변경이 불가능하다.
- 키워드 final 선언이 붙어있는 변수이다.
final 기반의 상수 선언의 예
- 상수의 이름은 모두 대문자로 짓는 것이 관례이다.
- 이름이 둘 이상의 단어로 이루어질 경우 단어를 언더바로 연결하는 것이 관례이다. (스네이크 형식)
상수는 선언과 동시에 값을 지정한다.
자바는 상수의 선언과 초기화를 분리해 두었는데, 상수를 지원하는 프로그래밍 언어에서는 자바와는 다르게 분리를 허용하지 않는다.
고로 자바에서 초기화가 가능하더라도, 사용하지 않고 선언과 동시에 값을 저장하는것이 바람직하다.
리터럴(Literals)
자료형을 기반으로 표현이 되는 상수를 의미한다.
정수는 무조건 int형으로 인식하기로 약속되어 있다.
5와 7은 '정수형 리터럴'이다.
그리고 3.3과 4.5는 '실수형 리터럴'이다
'리터럴'이라는 표현은 '상수'라는 표현으로 대신하는 경우가 많다.
long형 상수(리터럴)의 표현 방법
첫 문장을 입력시, 자바는 정수는 int형을 기본으로 표현하기 때문에
컴파일시 Integer number too large 라는 오류 메시지를 전달한다. 숫자가 4바이트를 넘어가기 때문.
따라서, 정수 뒤에 l 또는 L을 붙여서 long형 상수로 표현해 달라는 요청을 해야 한다.
실수형 상수 또한 double의 d 나 D 또는 float형의 f 나 F를 삽입한다.
접미사 L : 범위가 커서 오류가 나는 상수의 자료형을 long형으로 설정하기 위해 붙이는 접미어이다.
정수형 상수의 이진수 표현 방법과 언더바 삽입.
이진수로 표현할 때는 0b 또는 0B 를 앞에 붙여 표현하고,
숫자의 사이 원하는 위치에 언더바를 삽입 가능하다.
실수형 상수의 e표기법
표현을 간략하게 하기 위해 소숫점 자리를 맞추고 남은 자리를 10의 제곱으로 표현한다.
불 형 상수와 문자형 상수
불 형 상수는 true 와 false를 생각하면 된다.
문자형 상수는 '한', '글', 'a', 'z' 를 나타낸다.
이스케이프 시퀸스
이스케이프 시퀸스는 화면상의 어떠한 상태를 나타내기 위해 약속된 문자이다.
파이썬과 거의 동일하다.
* '\b' 이스케이프 시퀸스는 현재 이클립스에서는 사용이 불가능한 버그가 있다.
자료형 변환의 의미와 필요한 이유는?
두 피연산자의 자료형이 일치해야 연산을 진행할 수 있기 때문이다.
피연산자의 자료형이 일치하지 않을 때, 형변환을 통해 일치를 시켜야 한다.
자동 형 변환(Implicit Conversion) == 묵시적 형 변환
- 1. 자료형의 크기가 큰 방향으로 형 변환이 이루어 진다.
- 2. 자료형의 크기와 상관 없이 정수 자료형보다 실수 자료형이 우선한다.
명시적 형 변환(Explicit Conversion) == 강제적 형 변환
자동 형 변환 규칙에 부합하지는 않지만, 형 변환이 필요한 상황이면 명시적 형 변환을 진행한다.
double형 자료형을 int형 자료형으로 강제 변환한다.
'AI 솔루션 개발자과정(Java, Python)' 카테고리의 다른 글
14일차 - 접근 수준 지시자, 캡슐화, static, public, 메소드 오버로딩, String 클래스 (0) 2022.10.27 12일차 - 연산자, 조건문, 반복문 (0) 2022.10.25 10일차 - 통합 개발 환경 아나콘다와 주피터 노트북, bs4모듈과 requests, NumPy, Pandas (0) 2022.10.21 9일차 - 파이썬 마무리 정리 (0) 2022.10.21 8일차 - 클래스 (0) 2022.10.19