웹 개발 역량강화를 위해 내일배움카드로 수강할 수 있는 백엔드 교육과정을 찾아보았다. 남궁성&박매일 님의 '나도 할 수 있는 Java & Spring 웹 개발 종합반'이 교육일정이나 커리큘럼이 무난한 것 같아서 수강하게 되었다. 8주 총 65시간의 과정을 포스팅하고자 한다.
커리큘럼
주차 학습 내용 1주차 생각,표현,코딩하기란? 2주차 Java 기초 다지기1 3주차 Java 기초 다지기2 4주차 객체지향 프로그래밍 시작하기 추가1 객체지향 프로그래밍 설계하기 5주차 Spring 시작하기 6주차 Spring MVC part1 7주차 Spring MVC part2 8주차 Spring MVC part3 추가2 Spring DI 와 AOP 파이널 프로젝트
심볼 테이블은 변수를 관리하는 테이블을 뜻한다. 변수가 만들어지면 키값으로 변수이름, 밸류값으로 메모리 번지에 대한 정보가 심볼 테이블에 저장된다. 그리고 심볼테이블만 있으면 변수이름으로 메모리에 접근해 찾아갈 수 있다.
또한 심볼 테이블인 해쉬 테이블의 형태로 만들어지는데 이유는 해쉬 테이블이 검색을 빨리하기 위해 사용하는 테이블이기 때문이다.
변수를 선언하는 것은 심볼 테이블에 키값을 만드는 것과 같다. 따라서 변수를 선언하지 않으면 Can not find symbol 에러가 뜨고 메모리를 할당할 수 없다.
*불린타입은 형변환이 되지 않는다.
바꾸고나서자료형선언 바꾼후변수명 = (바꾸고나서자료형)바꾸기전변수명
자바의 데이터형을 알아보면 크게 두가지로 나뉘게 된다.
기본형(primitive type, 원시값)
그런데 메소드에 입력값(파라미터)에 원시값(primitive type)을 전달하는 것과 객체(reference type)를 전달하는 것에는 큰 동작 차이가 있다.
요청이 일어났을 때 값 그 자체를 전달받는 것이다.
자바에서 대부분은 Call by Value 방식을 사용한다.
public int add (int a, int b) {
...
}
메서드를 호출하는 호출자 (Caller) 의 변수와 호출 당하는 수신자 (Callee) 의 파라미터는 복사된 서로 다른 변수이다.
값만을 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 아무런 영향이 없다.
요청이 일어났을 때 값이 아닌 번지(주소)를 전달받는 것이다.
public int add (int[]a) {
...
}
참조를 직접 넘기기 때문에 호출자의 변수와 수신자의 파라미터는 완전히 동일한 변수이다.
메서드 내에서 파라미터를 수정하면 그대로 원본 변수에도 반영된다.
! 사실 자바에서 call by reference는 없다. 자바는 C와 달리 철저하게 포인터를 감추기 때문이다. 따라서 메소드 호출 시 원시값이 복사되느냐 주소값이 복사되느냐의 차이만 있을 뿐이다.
복사된 값에 따라 원시값이면 바로 기능하고, 주소값이면 주소를 통해 참조해서 값을 받아온다.
기존에 없던 기능을 하는 메소드를 기존에 있던 메소드의 이름으로 정의
오버로딩은 상속과 관련이 없고 이름만 같고 기능은 다르다.
(매개변수는 같고 리턴타입이 다른 경우 오버로딩이 성립되지 않는다.)
상속 받은 메소드의 내용을 변경하는 것이다.
따라서 이름, 매개변수, 리턴 타입이 같아야 한다.
자바도 다른 프로그램의 언어와 연산은 비슷하다. 파이썬으로 이미 기본 연산을 익혔기 때문에 큰 차이는 없었다.
표시하는 방법정도의 차이만 숙지하면 될 것 같았다. 그러나 다른 프로그래밍 언어를 학습하지 않고 자바가 첫 프로그래밍 언어인 경우 조건문과 반복문에 대해서 명확하게 하면 좋을 것 같다. 또한 시간이 난다면 백준이나 프로그래머스에서 알고리즘 공부도 하면 좋을 것 같다.