[패스트캠퍼스] 자바&스프링 강의 3주차

YunGyu Choi·2023년 7월 7일
0

FastCampus JavaSpring

목록 보기
3/8

웹 개발 역량강화를 위해 내일배움카드로 수강할 수 있는 백엔드 교육과정을 찾아보았다. 남궁성&박매일 님의 '나도 할 수 있는 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
추가2Spring DI 와 AOP
파이널 프로젝트

심볼 테이블(Symbol table)

심볼 테이블은 변수를 관리하는 테이블을 뜻한다. 변수가 만들어지면 키값으로 변수이름, 밸류값으로 메모리 번지에 대한 정보가 심볼 테이블에 저장된다. 그리고 심볼테이블만 있으면 변수이름으로 메모리에 접근해 찾아갈 수 있다.
또한 심볼 테이블인 해쉬 테이블의 형태로 만들어지는데 이유는 해쉬 테이블이 검색을 빨리하기 위해 사용하는 테이블이기 때문이다.
변수를 선언하는 것은 심볼 테이블에 키값을 만드는 것과 같다. 따라서 변수를 선언하지 않으면 Can not find symbol 에러가 뜨고 메모리를 할당할 수 없다.

연산자

  • 프로그램에서 데이터를 처리하여 결과를 산출한다.
  • 연산되는 데이터는 피연산자(operand)라고 한다.

연산 우선순위

  • 1순위 : 증감 연산자
  • 2순위 : 산술 연산자
  • 3순위 : 시프트 연산자
  • 4순위 : 비교 연산자
  • 5순위 : 비트 연산자(~만 1순위)
  • 6순위 : 논리 연산자(!만 1순위)
  • 7순위 : 조건(삼항) 연산자 ➡️ 조건식 ? 참값 : 거짓값
  • 8순위 : 대입 연산자
  • 특별히 주의할 점은 부정연산자만 같은 그룹에 속하는 다른 연산자와 달리 1순위로 잡힌다는 것이다.

강제 형변환 연산자 (Casting 연산자)

*불린타입은 형변환이 되지 않는다.
바꾸고나서자료형선언 바꾼후변수명 = (바꾸고나서자료형)바꾸기전변수명

메소드 호출시 파라미터 전달 방법

자바의 데이터형을 알아보면 크게 두가지로 나뉘게 된다.
기본형(primitive type, 원시값)

  • Boolean Type(boolean)
  • Numeric Type(short, int, long, float, double, char)
    참조형(reference type, 객체)
  • Class Type
  • Interface Type
  • Array Type
  • Enum Type
  • 기본형을 제외한 모든 것들

그런데 메소드에 입력값(파라미터)에 원시값(primitive type)을 전달하는 것과 객체(reference type)를 전달하는 것에는 큰 동작 차이가 있다.

1) Call by Value

요청이 일어났을 때 값 그 자체를 전달받는 것이다.
자바에서 대부분은 Call by Value 방식을 사용한다.

public int add (int a, int b) {
	...
}

메서드를 호출하는 호출자 (Caller) 의 변수와 호출 당하는 수신자 (Callee) 의 파라미터는 복사된 서로 다른 변수이다.
값만을 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 아무런 영향이 없다.

2) Call by Reference

요청이 일어났을 때 값이 아닌 번지(주소)를 전달받는 것이다.

public int add (int[]a) {
	...
}

참조를 직접 넘기기 때문에 호출자의 변수와 수신자의 파라미터는 완전히 동일한 변수이다.
메서드 내에서 파라미터를 수정하면 그대로 원본 변수에도 반영된다.

! 사실 자바에서 call by reference는 없다. 자바는 C와 달리 철저하게 포인터를 감추기 때문이다. 따라서 메소드 호출 시 원시값이 복사되느냐 주소값이 복사되느냐의 차이만 있을 뿐이다.
복사된 값에 따라 원시값이면 바로 기능하고, 주소값이면 주소를 통해 참조해서 값을 받아온다.

오버로딩

기존에 없던 기능을 하는 메소드를 기존에 있던 메소드의 이름으로 정의
오버로딩은 상속과 관련이 없고 이름만 같고 기능은 다르다.
(매개변수는 같고 리턴타입이 다른 경우 오버로딩이 성립되지 않는다.)

오버로딩의 특징

  • 메소드 이름이 동일해야한다.
  • 매개 변수 파일의 개수와 위치가 달라야한다.
  • 리턴 타입은 무관하다.
  • 정적인 바인딩이다.
  • 상속이 필수조건은 아니다.

오버라이딩

상속 받은 메소드의 내용을 변경하는 것이다.
따라서 이름, 매개변수, 리턴 타입이 같아야 한다.

오버라이딩의 특징

  • 부모 클래스오 자식 클래스에 있는 메소드의 이름이 동일해야 한다.
  • 리턴 타입, 매개변수 파일의 개수와 위치가 동일해야한다.
  • 동적 바인딩이다.
  • 상속이 필수조건이다.

느낀점!

자바도 다른 프로그램의 언어와 연산은 비슷하다. 파이썬으로 이미 기본 연산을 익혔기 때문에 큰 차이는 없었다.
표시하는 방법정도의 차이만 숙지하면 될 것 같았다. 그러나 다른 프로그래밍 언어를 학습하지 않고 자바가 첫 프로그래밍 언어인 경우 조건문과 반복문에 대해서 명확하게 하면 좋을 것 같다. 또한 시간이 난다면 백준이나 프로그래머스에서 알고리즘 공부도 하면 좋을 것 같다.

profile
velog에는 이론을 주로 정리하고, 코드와 관련된 것은 Git-hub로 관리하고 있어요. 포트폴리오는 링크된 Yun Lab 홈페이지를 참고해주시면 감사하겠습니다!

0개의 댓글