그냥 배우는 언어 기록하는 공간 :D

패캠 학습일지

[패스트캠퍼스] 자바 강의 3주차 학습일지

꾸준히_노력하기 2023. 11. 28. 19:20
배운 내용 정리

 

[ Part 2. 자바 기초 다지기 ]

ch 07. 논리적인 사고력 키우기 훈련

 

> 연산자의 종류

: 단항 연산자

: 이항 연산자

: 삼항 연산자

 

> 단항 연산자

: 증가 연산자 ++

: 변수의 값을 1씩 증가 시키는 연산자.

  ++a (전위), a++ (후위)

 

: 감소 연산자 --

: 변수의 값을 1씩 감소 시키는 연산자.

   --a (전위), a-- (후위)

 

 

> 이항 연산자

: 가장 보편적으로 보는 연산자.

 

: 산술 연산자

   + - * /(몫) %(나머지)

 

: 관계 연산자

   == != < > <= >= instanceof

 

: 논리 연산자

   && || !

 

: 복합 대입 연산자

   += -= *= /= %=

 

 

> 삼항 연산자

: 하나의 명령문을 이용해서

  조건이 참인지 거짓인지에 따라 두 가지 방법으로 처리 가능.

 

: (조건) ? 참 : 거짓

   ex. (a<0) ? -a : a → 절댓값 계산

 


> 명령문의 종류

: 조건문

   if, if~else

 

: 선택문

   switch~case

 

: 반복문

   for, foreach

   while, do~ while

 

: 제어문

   break, continue 

 


 

 

 


 

> 키보드로부터 데이터를 입력 받는 방법 실습

 

 

 


 

 

 


> 증감 연산자 실습

 

 


 

 


> 삼항 연산자 실습

 

 


> 정수의 자릿수 구하기 실습

 

 

 

※ 나머지를 구하는 연산자(%)는 실수형으로 나눌 수 없음. 

ex. 7.0%2.0 = 오류 발생

 


> 복합 대입 연산자

: 자기 자신과 다른 어떠한 값을 연산한 후 다시 자기 자신한테 값을 대입함.

: 값을 '누적'할 수 있는 연산자.

: 변수(L-Value) = 수식(R-Value)

 

a=a+b; → a+=b; (O)

a=b+c; → a+=bc; (X)

: 서로 다른 변수를 복합 대입 연산자로 쓸 수 없음.

 


> 복합 대입 연산자 실습

 

 


> 관계 연산자

: 왼쪽 수식과 오른쪽 수식의 대소 관계를 비교하는 연산자.

: 비교 연산자라고 부르기도 함.

: 결과는 항상 참(true) 또는 거짓(false)으로 나옴.

 

 

 


> 관계 연산자 실습

 

 


> 논리 연산자

: 결과는 항상 참(true) 또는 거짓(false)으로 나옴.

: !(not 연산), &&(and 연산), ||(or 연산)

 

ex. 

!a : a의 값이 참일 경우 거짓, 거짓이면 참.

a && b : a, b의 값이 모두 참일 경우 참, 그렇지 않으면 거짓.

a || b : a, b의 값이 하나라도 참일 경우 참, 그렇지 않으면 거짓. 

 


> 논리 연산자 실습

 

 


 

> if 문 (조건문 단순 if문)

 

if(조건식){  

    문장 1;  

    문장 2;

    // 조건식이 참이면 문장이 전부 실행

}

 


> 조건문 단순 if문 실습

 

 

 


> if ~ else 문 (조건문 블럭 if문)

 

if(조건식){

    문장 1; → 조건식이 참일 경우 실행

}else{

    문장 2; → 조건식이 거짓일 경우 실행

}

 


> 조건문 블럭 if문 실습

 

 

 


 

 

 


> 다중 if 문 (조건문 중첩 if문)

 

if(조건식 A){

    문장 1; → 조건식 A가 참일 경우 실행

}else if(조건식 B){

    문장 2; → 조건식 A가 거짓, 조건식 B는 참일 경우 실행

}else if(조건식 C){

    문장 3; → 조건식 A, B가 거짓, 조건식 C는 참일 경우 실행

}…

 else{

    문장 n; → 조건식 A, B, C가 모두 거짓일 경우 실행

}

 


> 조건문 다중 if문 실습

 

 

 


> switch ~ case 문 (선택문)

: 주로 다중 선택에 사용함.

: if ~ else에 비해 사용 범위가 제한적임.

 

switch(수식){

    case 상수 1:

            문장 1;

            break;  → 필요한 경우 사용

    case 상수 2:

            문장 2;

            break;  → 만나면 선택문 밖으로 탈출함

   

    default:         → 필요한 경우 사용

           문장 N;

}

 


> switch ~ case문 실습

 

 

 


> for 문 (반복문)

: 초기식은 처음에 딱 한 번만 수행됨.

: 조건식 → 반복할 문장 → 증감식 의 순서로 반복됨.

: 조건식이 거짓이 될 때 반복문 탈출.

 

for( 초기식 ; 조건식 ; 증감식 ){

        반복할 문장;

}

 


 

> foreach 문 (향상된 for문)

: 컬렉션 안에 있는 여러 데이터를 하나씩(each) 꺼내서 처리함.

: 더이상 꺼내올 데이터가 없을 때 반복문 탈출.

: for 문보다 직관적으로 사용하기 편함.

 

for( 변수 : 컬렉션 ){

        반복할 문장;

}

 


> for문, foreach문 실습

 

 

 


 

> while 문 (반복문)

 

초기식;

while(조건식){

        반복할 문장;

        증감식;

}

 


> do ~ while 문 (반복문)

: 반목할 문장을 실행한 수에 조건식을 검사함.

: 반복문 내의 문장을 최소 한 번 실행하고자 할 경우 유용함.

: while문이 중괄호 밖에 있기 때문에 세미콜론(;)을 꼭 써야 함.

 

초기식;

do{

        반복할 문장;

        증감식;

}while(조건식);

 


> while문, do ~ while문 실습

 

 

 


> 이중 for 문 (중첩반복문)

 

for(int i=0; i < 4 ; i++){

    for(int j=0; j < 4; j++){

        반복할 문장;

    }

}

 


> 이중 for문 실습

 

 


 

 

 


> 제어문

: 반복문을 직접 제어하고자 하는 경우 사용함.

: 반복문의 흐름을 변환함.

: break문, continue문

 

> break 문

: 사용 중인 반복문을 중단하고 바로 반복문을 탈출함.

 

> continue 문

: 수행 중인 반복문에서 현재 조건에 대한 처리는 중단하고,

  다음 조건에 대한 처리를 수행함.

: continue 아래에 있는 문장이 실행되지 않는 상태로

  반복문의 조건식으로 다시 돌아가는 것.

 


> 제어문 실습

 

 


ch 08. 메서드와 변수의 관계를 이해하라

 

> 메서드 (Method)

: 객체가 가지고 있는 동작(기능)을 메서드(함수)라고 함.

: 정의하고 호출을 하여 사용됨.

 

: 프로그램에서 어떠한 것을 처리(동작)할 때, 메서드로 만들어서 처리함.

: 어떤 방법으로 처리되는지의 측면에서 바라보는 것.

: 기능 = function = 함수

: 동작 = 행위 = 메서드(방법)

 

 


 

 

 


> 메서드의 정의와 호출(Call)

 

접근제한자 리턴타입 메소드명(인수 1, 인수 2 … ){

    수행코드;

    return 반환값;

}

 

※ 매개변수가 없더라도 괄호 필수.

 

 

※ 메서드를 호출하기 위해서는 실인수와 가인수의 개수와 타입이 일치해야 함.

 

 


> 메서드 정의 실습

 

 


> 매개변수 전달기법

: Call By Value (값 전달)

: Call By Reference (번지 전달)

 

 


> 매개변수 전달기법 실습

 

 


 

 


> 메서드의 오버로딩 (Overloading)

: 동작이 비슷하면 같은 클래스 내에서도 동일한 이름의 메서드를 사용할 수 있음.

: 단, 매개변수의 개수나 타입(메서드의 시그니처)이 달라야 함. 

: 메서드를 편리하게 사용하기 위한 객체지향 기법.

 


> 메서드의 오버로딩 실습

 

 


 

 


 


> API 오버로딩 메서드 실습

 

 


[ Part 3. 객체지향 프로그래밍 시작하기 ]

ch 01. 클래스로 객체 모델링하기

 

> DTO Model

: 데이터를 담아 쉽게 이동하기 위해서 만드는 클래스 구조.

: 모델은 해야 할 역할이 있는 것을 말함.

 


> 클래스_자료형 측면

: 새로운 자료형을 만드는 도구.

: 객체를 설계(모델링)하는 도구.

 


 

 

 


> 클래스_ 객체지향 측면

: 객체의 상태정보(멤버변수)와 행위정보(멤버메서드)를 설계하는 도구.

 


 

 

 


> 생성자 메서드 (Constructor)

: 메모리에 객체를 생성하는 역할.

: new 연산자에 의해 호출됨.

: 메서드의 이름이 클래스 이름과 동일해야 함.

  (컴파일러가 생성자 메서드라는 것을 알 수 있도록)

: 접근제한자가 public인 경우에만 호출됨.

: 모든 클래스에는 기본 생성자(default constructor)가 생략되어 있음.

: 리턴타입이 없지만, void를 작성하지 않음.

: 객체의 초기화를 위해 사용됨.

 

public class Person{

    public String name;

    public Person(){ 

        // 생략되어 있는 기본 생성자

    }

    public void play(){

        System.out.printIn("운동을 한다.");

    }

}

 


 

> this

: 객체가 생성된 후  자기 자신을 가리키기 위해 만들어지는 객체 변수.

: 우리 눈에는 보이지 않음.

※ 객체 변수 = 참조 변수 = 포인터 변수 = 레퍼런스 변수

 


 

> Heap Memory

: 객체가 만들어지는 메모리 영역.

: 여기에 만들어지는 객체를 인스턴스(instance, 객체의 실체)라고 함.

 


> 객체 생성/저장/출력/호출 실습

 

 


ch 02. 우리가 만들어보는 클래스의 종류

 

> 모델 (Model)

: 객체 지향 프로그래밍에서 클래스를 역할에 따라 부르는 이름.

: DTO, DAO, Utility

: 객체 (Object) = 클래스 (Class) = 모델 (Model)

 


> DTO, VO Model

: 데이터를 담아서 이동하는 모델.

: 데이터를 하나로 묶어야 되는 경우 필요한 모델.

: Data Transfer Object

: Value Object (하나의 값의 형태로 담는다는 의미)

 


> DTO, VO Model 실습

 

 

 

 


> DAO Model (Data Access Object)

: 데이터 베이스에 데이터(DTO, VO)를 저장(insert), 수정(update)하거나

  검색(select), 삭제(delete)를 하기 위해 만들어지는 모델.

: SQL 명령문을 이용해서 데이터 베이스를 핸들링함.

 

: CRUD 동작을 가지고 있는 모델.

  (Create, Read, Update, Delete)

: 비즈니스 로직을 처리하는 모델.

  (비즈니스 로직 : 프로그램이 아주 바쁘게 동작이 되는 부분을 담당하는 클래스)

 


> DAO Model 실습

 

 

 

 


> Utility Model (Utility, Helper, Facade)

: 실제 용어가 아닌 DTO, VO, DAO의 역할 이외의 모델을 통틀어서 칭하는 것.

: 반복되는 동작(기능)을 별도의 클래스로 만들어 놓고 필요할 때 사용하는 모델.

: main 메서드에서 분리해서 코딩함.

: java.util 패키지에 많이 존재.

 


> Utility Model 실습

 

 


 

 

 

 

후기

 

이번 주 초반에는 새로운 것을 배우고,

후반에는 전에 배웠던 것의 한층 심화된 내용을 배우느라

머릿속이 너무 뒤죽박죽 했던 것 같다..

 

클래스나 메서드 등 나름 익숙해졌다고 생각했던 내용도

자세히 배우니까 너무 어려워서 강의를 여러 번 반복해서 들었다. 

기억하는 내용이 별로 없는 건가 싶어서 자신감이 하락했다...

이번 주는 처음으로 벽을 느낀 기분..? 그래도 잘할 수 있을 거야..!

 

이번 달 목표는 수강률 65%를 달성하는 것이었는데,

집중력이 떨어졌던 탓인지 57%밖에 달성하지 못했다..

더 열심히 해야 하는데.. 다음 주에는 더 집중해 보자!

 

다음 주도 화이팅!