오늘부터 본격적인 가을장마가 시작되었다, 이번 장마로 더위가 한풀 꺾이고, 얼른 기분 좋은 바람을 맞았으면 하는 바람이다.

오늘은 학원의 3일 차다. 학원에 거의 10시간 가까이 되는 시간을 있다 보니까 하루하루가 되게 길고, 알차다는 생각이 든다.

나는 학원을 다닌 지 2주쯤 된 줄 알았다 ㅋㅋ

오늘도 어김없이 9시쯤 도착하여 미리 오늘 할 파트들을 살펴보고 수업 준비를 마쳤다.

수업을 하던 중 강사님이 이런 말씀을 하셨다.

취업교육은 말그대로 모르는 기술을 배워서 취업을 준비하는 것이다. 당신들이 원래 알던 기술에 더 나은 발전을 바라고 온 것이 아니라 0부터 시작하려고 왔다는 말이다. 사실 무료 교육인 것 같지만 알고 보면

나라에서 다 당신들을 감당하고 있는 것이다. 앞으로 6개월 동안 시간이 남을 일은 없을 것이다. 만약 남는다면 공부를 잘못하고 있다는 것이다. 앞으로 시간이 남을 일이 없게 만들어주겠다.

참 말씀을 잘하시는 것 같다. 채찍인 것 같으면서도 속뜻은 당근 같은 그런 느낌이었다.

오늘도 한 번 더 열심히 하겠다고 다짐해본다.

 

 

역시 단기간에 배워야하는 국비지원 교육의 특성상 진도의 속도가 빠를 수밖에 없다.

나도 나름 선행학습이 좀 된상태로 갔는데 오늘 진도의 속도를 보고 약간 당황스러웠다. 아예 언어를 처음 접한 몇몇 사람들은 오늘 완전 패닉 상태에 빠져있다가 집으로 돌아갔다.

필자는 국비지원학원을 다닐 생각이 있다면 적어도 언어에 대해서는 어느 정도 공부를 혼자 해서 가는 것을 추천한다.

 

오늘 배운 내용을 정리하겠다.

 

1. 증감 연산자

 

i++ 와 ++i의 차이점 (--를 넣어도 상관없다)

int A =1;

A = i++;
//A의 값에 i를 먼저 대입 시킨 후 i에ㅔ ++연산자 실행

A = ++i;
//i에 ++연산자 실행후 i값을 int에 대입

int A =i++;	//A=1, i=2
int A = ++i;	//A=2, i=2

 

2. 삼항 연산자

 

많은 책에서 삼항 연산자는 실무에서 안쓰인다고 적어 놓는다는데 강사님 말로는 실무에서 엄청 쓰인단다.

예시로 바로 알아보도록 하자

int temp = (1>2)?3:4	//temp=4
int temp = (1<2)?3:4	//temp=3

삼항 연산자는 조건의 참과 거짓에 따라 이라면 앞의 값이 콜론(:) 앞의 값이 리턴, 거짓 이라면 뒤의 값이 리턴된다.

 

토막 상식!

 IT는 여길가나 저길가나 무조건 협업이 필수이다. 그러므로 개발자의 코드는 항상 표준화되어있어야한다.

또한 명확성을 위해 하나의 DataType에는 하나의 변수를 선언해 준다고 한다.

 

3. 관계 연산자

&, | 과 &&, || 의 차이점

&, | 은 주어진 조건을 모두 판단하고 결과를 반환한다.

&&, || 은 조건의 결과가 미리 정해지면 나머지 조건들은 무시한채 결과값을 반환한다.

 

4. 사용자에게 값 입력받기

나는 혼자 공부할때 사용자에게 값을 입력받는 방법은 Scanner를 import하거나 bufferReader로 하는 방법밖에 없는 줄 알았다. 근데 처음 배운건데 public static void main(String[] args)에서 args에 값을 넣어줄 수 있다는 것이었다. 예를 들어 Hello.java 파일의 args에 input값을 넣고 싶으면 cmd에서 java Hello 123 이런식으로 args에 123을 넣어줄 수 있다. args는 StringArray로 DataType을 가공에서 정수로도 사용이 가능하다. int A = Integer.parseInt(args[0])    → 이런 식으로 정수형으로 형변환을 시켜준다.

 

5. java의 조건은 무조건 true or false!

다른 언어(Low Level Language)에서는 조건문 속에 숫자가 와도 상관이 없다

but, JAVA(High Level Language)에서는 조건문 속은 무조건 boolean타입(true or false)이 와야한다.

why? HLL에서는 명확성과 가독성을 최대화 하기 위해

반복문

➤반복문에서 조건은 false가 될때까지 반복된다. 즉, while(true)나 for( ;true; )일때 무한루프

 

6. IF문의 기본 구조 (조건의 값이 true일 때 실행

if (조건문) {
    <수행할 문장1>
    }

 

7. FOR문의 기본 구조 (조건의 값이 false가 될때까지 반복)

for(초기값; 조건문; 증가치){
    <반복할 문장>
    }

 

8. WHILE문의 기본구조 (조건의 값이 false가 될때까지 반복)

while(조건문){
    <수행할 문장>
    }

 

9. break와 continue

 

9-1. break

반복문 내에서 break를 만나면 바로 그 반복문을 탈출하게 된다.

9-2. continue

반복문 내에서 continue를 만나면 반복문의 첫문장(조건문)으로 돌아온다.

 

※ 중요한내용

먼저 알아둬야할 개념 reference와 primitive의 차이점

전에 배웠던 primitive Data Type은 그 Data Type의 크기가 변하지 않는다.

→ 값이 많아지면 관리가 힘들어진다.

그리고 새로 배울 Reference Data Type은 되게 flexible한 Data Type이다

→ 많은 값을 다루더라도 참조자만 알고 있으면 관리가 쉬워진다.

String은 class에 속한다.

 

우리가 아는 대표적인 reference data type → String !!

이제 배열(Array)을 추가한다.

 

10. 배열(Array)

 

배열의 선언방법

int[] A = new int[5];      //다섯개의 값을 넣을 수 있는 배열 A 생성

//값을 넣을때는
A[0] = 1;
A[1] = 2;
A[2] = 3;
A[3] = 4;
A[4] = 5; //이런식으로 넣어줄 수 있다.

배열속 정보가 몇갠지 알아야할 때가 있는데, 너무 정보가 커지면 일일이 셀수없다.

그럴땐 A.length를 하게되면 배열의 크기가 반환된다.

배열을 선언하는 또다른 방법(=값을 바로 넣는 방법)

int[] Array = {1,2,3,4,5}

int[] Array = new int[]{1,2,3,4,5}

 

마지막으로 집에서 생각해보라고 낸 문제가 있다.

int j[] = int Array를 했을때 배열이 둘이 연동된것 처럼 하나의 값만 변경해줘도 두개 다 변한다.

왤까?!!?

내 생각에는 배열이란 Reference값이니까 왼쪽값에 대입을 시켜주면 참조영역이 같아지므로 값이 둘다 공유 되는것 같다.

 

오늘의 추천곡은 비오는 날씨에 잘 어울리는 Reminiscence - Vanilla Mood

'안녕, 국비학원' 카테고리의 다른 글

2일차, 시작된 교육  (0) 2019.09.04
1일차, 너 정체가 뭐니~?  (0) 2019.09.03

오늘부터는 본격적인 수업에 들어갔다.

강사님이 힘들기로 유명하시다니는데 내 어떤 분이 9시 31분에 딱 들어왔는데 수업에 방해된다고 이번 시간 끝나고 쉬는 시간에 들어오라고 하고 문을 닫아버렸다.

뭐.. 첫날부터 당부하셨던 내용이긴 하다.

난 그런 강사님의 마인드가 맘에 들었다. 강사님이 말씀하시길 "강의장에 들어온 순간부터 우리는 모든 행동과 말에 의도와 목적이 담겨있어야 한다. 생각 없는 행동은 용납할 수 없다" 고 하셨다. 

국비지원 학원의 강사진에 의심이 많은 사람들이 많던데 정말 그건 운빨인 것 같다. 당연한 말이지만 본인의 의지도 따라와 줘야 한다. 

나는 국비지원에서의 운은 나름 괜찮았던 것 같다. 내 의지만 잘 케어하도록 해야겠다.

 

강사님은 기초를 튼튼하게 다져야 후반에 흔들리지 않는다 하셨다.

맞는 말이다.

그 말을 입증이라도 하듯이 그렇게 느리지도 빠르지도 않게 꼼꼼히 잘 가르쳐주셨다.

 

오늘 배운 내용은 간단하게 JAVA의 컴파일과 실행의 상관관계, 자료형, 형 변환 그리고 연산 정도를 배웠다.

 

그럼 본격적으로 정리해보겠다.

 

1. JAVAapplication의 생성 원리

1-1. 컴파일(Compile)

path설정(환경변수) JDK를 OS에 인식시켜주는 과정

--> 적용 이유는 그냥 cmd에서 컴파일할 수 있지만 그 경로를 모두 외우고 있어야 하는 불편함이 있기 때문이다. (javac를 이용한 java파일의 컴파일 원리를 알아두는 개념)

JDK환경변수 설정이 다 되었다는 가정 하에 콘솔 창에서 컴파일 명령어 javac (FileName). java를 해주면 컴파일이 완료된다.

※cmd에서 echo %path%를 해주면 환경변수에 적용된 path설정 값들을 확인할 수 있다.

 

1-2. 실행(Execute)

컴파일 후 나오는 파일의 확장자인 class를 JRE가 실행시켜줄 때 class의 위치를 모르기 때문에 classpath를 선언해 주어야 한다. (but! classpath의 default값은 현재 위치로 되어있기 때문에 굳이 환경변수 설정을 해줄 필요는 없다. (java를 이용한 class파일의 실행 원리를 알아두는 개념)

치를 컴파일이 완료되어 class화 된 파일의 실행은 java (FileName) <-- 여기서 확장자는 생략한다.

왜 좋은 에디터들을 놔두고 굳이 cmd로 컴파일과 실행을 할까?

요즘은 에디터에서 제공되는 수많은 기능들이 자기 실력인 줄 아는 개발자들이 많다고 한다.

때문에 그런 사람들에게 새로운 환경에서 개발을 하라고 하면 당황하는 경우가 많다고 한다.

그걸 보고 툴을 잘 쓴다고 하지, 개발을 잘한다고 생각하지는 않는다고 한다.

 결론은 JAVA라는 언어는 이식성이 좋기 때문에 어떠한 에디터에서도 편집이 가능한 언어이다.

따라서 컴파일과 실행에 대한 기초적인 원리를 익혀두기 위함이다.  

cmd를 이용한 과정

 

2. editplus의 사용

2000년 초반 개발자들이 쓰고 지금은 거의 사용하지 않는 editplus를 사용하는 이유는 처음부터 편리한 에디터를 사용한다면 편리한 에디터가 없을 때 아무것도 할 수 없는 개발자가 되기 때문 (=타이피스트?)

에디터에 종속되지 않는 개발자가 되자는 취지

editplus에도 에디터 내에서 컴파일과 실행을 시킬 수 있는 기능이 있는데, 핵심적으로 필요한 정보는 JDK\bin 속의 사용할 명령어 파일, (but, 이 경로는 환경변수 설정으로 OS에 인식시켜놨으므로 자신이 사용할 명령어를 그냥 입력하기만 해도 된다.) , 컴파일 혹은 실행시킬 파일 이름, 디렉터리가 필요하다. 설정이 완료되면 위에서부터 기본적으로 ctrl+1, ctrl+2 …...순으로 단축키가 생성된다.

에디터 플러스도 인자 값을 직접 입력해 줄 수 있는데 아까와 같은 단축키 생성 창에서 컴파일 혹은 실행시킬 파일을 넣는 창 속의 값 뒤에 “인수 내용 묻기”를 추가해주면 된다.

딱 봐도 오래되어 보인다.

3. 자료형(DataType)

자료형도 두 가지로 분류된다. 기본자료형(primitive DataType), 참조자료형(reference DataType)으로 분류가 된다. 쉽게 생각해서 기본자료형 8개를 제외한 나머지는 모두 참조자료형으로 보면 된다.

기본자료형 - boolean, char, byte, short, int, long, float, double

 

4. 형 변환(Casting)

JAVA는 모든 정수형의 연산을 int로 바꾼 뒤 연산한다.

실수와 정수의 연산은 묵시적으로 double형으로 바꾼 채로 연산한다(묵시적 형 변환). 이 연산의 결과를 대입할 변수가 만약 정수형이라면 CastingTest.java:에러가 난 행 번호: error: incompatible types: possible lossy conversion from double to int 이러한 컴파일 에러가 발생하게 된다.

ex) 

byte b1 = 1

byte b2 = 2

byte b3 = b1 + b2 (x)  묵시적 형 변환으로 인한 ERROR

int b3 = b1 + b2 (o)  묵시적 형 변환 ERROR 해결법

byte b3 = (byte)(b1+b2) (o)  → 명시적 형변환

 

(double)201/2 = 100.5  형 변환보다는 연산처리 순서를 파악해야 한다.

(double)(201/2) = 100.0

 

 

5. 연산 

정수와 정수는 +가 있으면 더하기 연산을 하게 되고,

문자열 뒤에 +가 붙게 되면 append(덧붙이기)가 된다.

ex) 1 + 2 = 3      | ㅋㅋ + 3 = ㅋㅋ3

 

대입 연산자

+, -, *, /

+=, -=, *=, /=

=!



예외적으로 식별자(identifier)는 자바 프로그래밍을 하는데 필요한 구성요소를 구별하는 이름을 뜻하는 단어인데 식별자로는 예약어(Key word)를 사용할 수 없다.

 

가을 장마가 시작된다.

오늘의 추천곡은 All I Need - Foster

'안녕, 국비학원' 카테고리의 다른 글

3일차, Flexible  (0) 2019.09.05
1일차, 너 정체가 뭐니~?  (0) 2019.09.03

요즘 들어 부쩍 국비지원에 대해 궁금증을 갖는 사람이 늘어나고 있지만, 궁금증에 대한 시원한 대답이 나오지 않는 경우가 많다.

필자는 이 글을 시작으로 국비 학원이 끝나는 날까지 글을 올릴 생각이며 최대한 객관적인 정보를 올리려고 노력할 것이다.

이 글을 보고 국비지원에 대해서 반신반의한 생각을 가진 모든 사람들에게 시원한 대답은 아닐지라도 긴 인생길에 중간쯤에 서있는 이정표가 되었으면 하는 바람이다.

 

먼저, 간단히 소개를 하자면 나는 고등학교를 최종학력으로 한 비전공자이며 내가 학원에 대한 궁금증을 가진 모든 예비 IT 직군의 종사자들의 이정표가 되었으면 하는 목표를 갖고 있다.

 

소개는 이 정도로 하고 1일 차에 대한 기록으로 넘어가 보자.

 

9시 30분, 우리 학원의 등원 시간은 9시 30분이다. 다른 학원은 어떤지 모르겠으나, 비교적 여유로운 시간이라고 생각이 들었다. 

하지만 첫날은 전산등록으로 9시 10분까지 등원하라는 문자를 받아 9시쯤에 도착한 것 같다.

오늘은 거의 학원 규칙 및 국비지원 유의사항, 반장 선출, 조 나누기, 자기소개 등 아이스브레이킹의 시간이 대부분이 었던 것 같다.

 

반의 분위기가 안정이 되고 저녁 시간쯤 6개월 과정의 핵심 언어인 JAVA에 대한 간단한 배경과 작동원리를 배웠다.

 


JAVA 언어의 특징

 

    1. 객체 지향 언어이다(OOP)

        - 객체 지향이란 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서

          프로그램을 완성하는 기법이다.

 

    2. 오픈소스 라이브러리가 풍부하다.

        - 자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또 한 오픈 소스가 많다

 

    3. 이식성이 높은 언어이다.

        - 자바 실행 환경(JRE)이 설치되어 있는 모든 운영 체제에서 실행 가능하다.

          예를 들면 이런 느낌이다. (밑의 테이블을 층층이 쌓여있는 칸으로 생각하자 ㅋㅋ) 

4층        JAVA application
3층        JRE (Java Runtime Environment)
2층        OS가 어떤게 와도 상관이 없어서 이식성이 좋다는 것
1층        H/W 쉽게 말해 본체

※ 위층은 아래층에 종속되어 있다고 말할 수 있다. ( 즉, 아래층은 윗층에 대한 platform )

 

    4. 속도가 느리다.

        - 자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로

          번역되고 실행하는 과정을 거치기 때문에 속도가 느리다.

 

조금만 더 시원해지자 날씨야

 

 

 

 

'안녕, 국비학원' 카테고리의 다른 글

3일차, Flexible  (0) 2019.09.05
2일차, 시작된 교육  (0) 2019.09.04

+ Recent posts