전자정부 프레임워크 (eclipse 사용..)
eclipse를 자유자재로 사용할 줄 알아야 한다.

 

# eclipse 다운

.exe 설치파일은 윈도우 검색으로 바로 실행가능하다.
현업에선 압축파일로 받는 추세이다. 검색하여 실행은 못하나, 압축파일로 받게되면 원하는 폴더에 이동시켜 사용할 수 있다.
Eclipse IDE for Enterprise Java and Web Developers 다운.
Enterprise : 분산된

개발 tool이 최소로 요구하는 JDK-버전이 있다고 했었다.
(이클립스를 실행하기 위한 Java-버전이 필요하다는 것)
→ 프로젝트시 예전 JDK-버전을 사용하는데 제한은 없다.

관리자 권한으로 install 파일을 실행하여 설치 폴더를 '유저'가 아닌 C드라이브의 Program Files에 다운로드하면,
해당 컴퓨터의 모든 사용자가 사용가능하다.

 

# eclipse 실행, 환경 설정

 

내가 프로젝트를 할 Workspace 설정한다. (로컬 디스크 D:\KosaCourse\projects)
실행 후, Open perspective를 눌러 Java를 추가한다.
Open perspective -> 내가 개발하는 환경에 맞추어 UI를 선택 (view뿐만 아니라 menu도 바뀜)

menu란의 [window]를 눌러 view를 선택할 수 있다.
우선 다른창은 모두 닫고 Package Explorer, console view만 열어보자.

프로젝트 생성 new -> java project
JRE -> 프로젝트에 맞는 JavaSE-버전을 선택한다. **
여기서 내가 1.8버전을 사용한다치면 내 pc에 꼭 1.8버전이 있어야 사용가능하다.
따라서 Conpigure JRE.. 에서 내가 다운받았던 JDK-버전 폴더들을 추가해준다.
Add -> Standard VM -> JRE home에 내가 다운받은 JDK-버전 폴더 디렉토리를 등록!


execution environment 에서 JavaSE-17를 선택하는 의미 : JDK-17.0.21이라하면, 뒤의 update는 상관없이 JDK-17만 환경이 맞으면 된다는 뜻이고,
specific JRE 에서는 update된 내용까지 정확히 사용하겠단 의미이다.

Configure JREs... 추가기능에서는 내가 사용할 JDK-버전들을 설치, 추가할 수 있다.
여기서 본래 jdk-17을 jdk-17.0.10으로 Edit해주고, 적용해주면 새로 javaproject생성시 jdk-17.0.10으로 사용할 수 있다. (update버전까지 정확히 사용가능)
(사실 update버전까지 민감하게 맞추어가며 개발할 필요성이 그리 높진 않다.)

결과적으로 Use an execution environment JRE의 내가 사용할 JDK버전과 config에서 추가한 JDK-버전을 일치시켜 사용하여야 한다.


Project layout
src폴더와 bin폴더를 분리해서 사용설정

Working sets
건드리지 않음

Module
→ javaSE-11 이상부터 지원
내가 만드는 프로젝트가 라이브러리라 한다면 반드시 체크

 


# 프로젝트 생성과 사용


이렇게 프로젝트 생성시, javaSE-버전과 src폴더가 생성되어있다.
소스를 작성하고 컴파일하게 되면 bin폴더가 생성된다. → 패키지 생성과 동시에 bin폴더가 생성된다.

src폴더에 pakage 생성 → 상위, 하위패키지를 구분 짓는 기호는 '.'이다.
생성 후 폴더들이 생겼는지 확인.

이클립스는 소스를 저장만하면 자동으로 컴파일 된다.(패키지 생성과 동시에 bin폴더가 생성) bin폴더를 확인해보면 바이트코드 파일(.class)가 생성된 것을 확인할 수 있다.

경우에 따라서 소스코드파일을 열지 않고 실행하여 확인할 때가 있으면, 코드소스 우클릭 → run as → java application
소스코드가 열려져 있지 않은 상태에서 위쪽의 run을 누르게되면 최근에 사용했던 소스를 작동시킨다.

 

 

#  p30 예제 따라해보기 // 변수 선언하고 출력

소스코드 인코딩 방식은 관례적으로 UTF-8
협업과정에서 각자의 컴퓨터에서 개발할 때 인코딩 방식을 맞춰주어야 한다. 그렇게하지 않으면 예를들어 소스코드 내의 '한글'등 언어가 깨질 수 있다.
메뉴 → [window] → [preference] → [workspace] → [text file encoding]

앞으로의 과정에서 패키지가 많아지면 익스플로러 창에서 보기 불편할 수 있다. 따라서 왼쪽 상단 view menu에서 패키지 프레젠테이션에서 나열방식을 설정해준다.

소스코드파일의 이름 *.java에서의 *는 소스코드 내의 class 이름과 같아야한다!(무조건)
현재 public, static, void에 관해서 너무 신경쓰지말고 공부하자. 추후에 다 알게된다.

Document 주석이란?
- 사람을 위한 주석이 아니다.
- 클래스나 메소드 위에 /** 후 엔터를 치게되면 주석이 만들어지는데, 이것은 api를 이용하여 HTML파일로 만들어준다...?
- java 1.8 api document 검색하여 overview사이트에서 참고

현 시점에서 행주석과 범위주석은 필수로 알아야한다.

*범위 주석 설정 변경하기
메뉴 → [window] → [Preferences] → [java] → [Code Style] → [Formatter] → new로 새로 생성 → My Formatter이라 이름짓고 [Comments] 의 3번째 체크 해제하기

실행문 뒤에는 무조건 세미클론(;)을 후미에 붙여주어야 한다.(기본, 무조건)

확인문제 풀고 챕터 1 마무리



2장 변수와 타입

 

2.1 변수 선언

변수(variable) : 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름

변수 이름 규칙 (관례) → 첫 번째 글자가 문자, 중간부터 문자, 숫자, $, _ 를 포함할 수 있다.

또한 첫 문자는 소문자로 시작하되 '캐멀 스타일'로 작성하는 것이 관례이다.

ex) score, mathScore, sportsCar

 

● 자바 소스 파일명(=클래스명)은 대문자로 시작하는 것이 관례

ex) Week.java, MemberGrade.java, ProductKind.java

 

※ 변수 이름은 어떤 값을 저장하고 있는지 쉽게 알 수 있도록 의미 있는 이름을 지어주자. (한글 포함 X)

 

● 변수 초기화 : 변수에 최초로 값을 대입하는 행위

ex) int score = 90;

 

→ 변수는 또 다른 변수에 대입되어 메모리 간에 값을 복사할 수 있다.

 

예제) 두 변수의 값을 교환하기 위해 새로운 변수 temp를 선언한 것에 주목

int x = 3;
int y = 5;

int temp = x;	// temp에는 3값이 저장
x = y; 		// x에는 5값이 저장
y = temp; 	// y에는 3값이 저장

따라서 x = 5가 되고, y = 3이 되어 두 변수의 값을 교환하는 코드이다.

 

 

2.2 정수 타입

→ 변수는 선언될 때의 타입에따라 저장할 수 있는 값의 종류와 허용 범위가 달라진다.

 

※ 다음의 기본타입 8개는 기억하자

값의 분류 기본 타입
정수 byte, char, short, int, long
실수 float, double
논리(true / false) boolean


※ 정수 타입

타입 메모리 크기 저장되는 값의 허용 범위
byte 1byte 8bit -2의 7승 ~ (+2의 7승 - 1) -128 ~ 127
short 2byte 16bit -2의 15승 ~ (+2의 15승 - 1) -32768 ~ +32767
char 2byte 16bit 0 ~ (+2의 16승 - 1) 0 ~ 65535 (유니코드)
int 4byte 32bit -2의 31승 ~ (+2의 31승 - 1) 대략 -21억5천 ~ +21억 5천
long 8byte 64bit -2의 63승 ~ (+2의 63승 - 1) int형 범위의 제곱 범위

→ 정수 타입과 몇 바이트의 메모리 크기를 가지는지만 기억하자

※ 1byte = 8bit, bit는 0과 1이 저장되는 정보의 단위

1bit → 1byte → 1kbyte → 1mbyte → 1gbyte → 1tbyte
1바이트부터 1000단위로 단위명칭이 바뀐다. 정확하게는 '1024배'이다.

byte, short, int, long은 모두 부호가 있는 '정수 타입'이므로 최상위 bit는 부호 bit로 사용되고,

나머지 bit는 값의 범위를 결정한다.

 

● 리터럴 : 코드에서 프로그래머가 직접 입력한 데이터 값

 

long 타입은 수치가 큰 데이터를 다루는 프로그램에서 사용 → 은행이나 과학 분야의 프로그램

※ 컴파일러는 기본적으로 정수 리터럴을 int 타입 값으로 간주한다.(4byte를 기준으로 숫자를 인식)

int 타입의 허용 범위를 초과하는 리터럴은 뒤에 'L' 또는 'l'을 붙여 long 타입 값임을 컴파일러에게 알려줘야 한다.

 

○ 기본적으로 프로그램은 메모리를 적게 사용하는 것이 좋다. 하지만 cpu의 기본설계에 따라 달라진다.

예를들어, 정수형 타입 1byte + 1byte를 계산하는데 해당 cpu는 정수형 타입을 4byte 표준으로하여 계산하기 때문에 4byte + 4byte 형식으로 바꾸어 계산하게 된다. 이러한 과정에서 1byte를 4byte로 변환하기 때문에 어쩌면 시간이 더 들게될 수 있다는 것이다.
그렇기 때문에 int로 선언해서 계산하는 것이 더 빠를 수 있다는 이야기이다.

 

★ 실제로 코드로 확인해보자.

byte v1 = 30;
byte v2 = 50;
byte result = v1 + v2;
→  result 계산이 안된다. cpu는 정수형 기본데이터 타입을 4byte단위로 계산하기 때문에 result의 결과값이 1byte이기 때문에 오류가 난다. 때문에 result 선언 타입이 4byte이상이 되어야 한다는 것이다. int result로 선언하거나 long result로 선언해야한다.

변수를 연산하는 것과 리터럴을 연산하는 것은 다르다..
위의 byte result = v1 + v2; 이것은 컴파일 에러가 일어나지만
byte result = 30 + 50; 은 에러가 나지 않는다. (byte result = 80; 으로 인식)

 

2.3 문자 타입

char는 정수타입이다.
char var1 = 'A'; 에서 작은따옴표(')로 감싼 것을 문자 리터럴이라 한다.
문자 리터럴은 유니코드로 변환되어 저장되는데, 숫자로 매핑한 국제 표준 규약이다.
따라서 char var2 = 65; 한다면 var1과 var2는 같은 값을 나타낸다.

char c5 = ''; // 컴파일 에러가 일어난다. 작은따옴표 사이에 공백하나를 두어서 초기화 시킨다.
char c6 = ' '; // 빈 문자(공백)는 숫자와 매핑되어있어서 에러가 생기지 않는다.

 

2.4 실수 타입

타입 메모리 크기 저장되는 값의 허용 범위 (양수 기준) 유효 소수 이하 자리
float 4byte 32bit 1.4 * 10의 -45승  ~  3.4 * 10의 38승 7자리
double 8byte 64bit 4.9 * 10의 -324승  ~  1.8 * 10의 308승 15자리

→ double 타입이 float 타입보다 큰 실수를 저장할 수 있고, 그 때문에 정밀도 또한 높다

부동 소수점 방식으로 메모리에 저장한다.

 

※ 정수 타입과 저장방식이 다르기 때문에 int와 float이 똑같이 4byte의 메모리 크기를 갖는다고 해도 float이 훨씬 큰 값을 표현할 수 있다.

 

float v1 = 0.1234567890123456789F;
double v2 = 0.1234567890123456789;

※ 컴파일러느 기본적으로 실수 데이터 타입을 8byte(double) 기준으로 연산한다. 따라서 맨뒤에 f 또는 F를 붙여주어야 한다.

 

float은 소수점 8자리까지 출력 (마지막에 반올림한다)
double은 소수점 16자리까지 출력 (마지막에 반올림한다)
→ 결과적으로 double이 정밀도가 더 높고, 8byte기준으로 계산하기 때문에 더 빠를 수 있다!
→ 특별한 이유가 없다면 float보다 double을 사용하자!!

 


☞ float도 int도 4byte인데, float은 어떻게 int보다 큰 수를 변수에 대입할 수 있을까?
'수'를 표현하는 저장방식이 다르기 때문이다. float은 지수와 가수부분만 저장하기 때문에 훨씬 더 큰 수를 넣을 수 있다.
숫자 1000은 가수 1, 지수 3

→ 이렇게 지수와 가수 1,3만 저장하기 때문에 실수타입은 정수타입보다 훨~씬 더 큰 수를 표현할 수 있다.

double v4 = 10000000000000L;
double v5 = 10000000000000.0; // 사실상 이렇게 큰 숫자를 다룰 경우가 극히 드물다

 

cf) 프로그램에서 가수, 지수 표현이 나온다면 무조건 실수타입이다.

 

※ 결론적으로 그냥 정수타입을 선언할 땐 int, 실수타입을 선언할 땐 double만 사용하면 된다.

 

2.5 논리 타입

참과 거짓을 의미하는 논리 리터럴은 true와 false이다.

boolean stop = true;
boolean stop = false;

→ 상태값에 따라 조건문과 제어문실행 흐름을 변경하는 데 사용


boolean은 1byte의 크기를 가진다. 실상 True는 1, False는 0으로 1비트만으로 표현 가능하다. 하지만 여기에서 1byte는 크게 의미가 없다. 그냥 넘어간다.

2.6 문자열 타입

큰 따옴표(")로 감싼 여러 개의 문자들은 유니코드로 변환되지 않는다.

따라서 큰 따옴표로 감싼 문자들을 문자열이라 부르고 String 타입을 사용해야 한다.

String var1 = "A";
String var2 = "홍길동";

→ 참고로 String 타입은 기본 8가지 타입 이외에 표준 api에서 제공해주는 참조 타입이다.

 

● 이스케이프(escape) 문자 (문자열 내부에 특정 문자를 포함시켜 출력에 영향을 미침)

이스케이프 문자  
\" " 문자 포함
\' ' 문자 포함
\\ \ 문자 포함
\t 출력 시 tab만큼 띄움
\n 출력시 줄바꿈(라인피드)

 

예시)

String str = "나는 \n\"자바\"를 \n배웁니다.";  // 이스케이프 문자 표현
System.out.println(str);

 

나는 

"자바"를 

배웁니다.

cf) window 명령프롬프트에서 값을 입력하고 엔터를 치게되면 끝에 \r\n이 따라 붙어서 입력된다.

 

Java 13부터 """ 내용 """ 텍스트 블록 문법을 제공한다.

위와 똑같은 출력 코드 예시)

String str = 
"""
나는 
"자바"를 
배웁니다.
""";
System.out.println(str);

'JAVA' 카테고리의 다른 글

14일차 2024 - 3 - 15  (0) 2024.03.14
13일차 2024 - 3 - 14  (0) 2024.03.14
12일차 2024 - 3 - 13  (0) 2024.03.13
3일차 2024 - 2 - 28  (0) 2024.02.28
1일차 2024 - 2 - 26  (0) 2024.02.27

+ Recent posts