[플레이데이터 풀스택 백엔드 9기] 2주차 - Java

lavella·2025년 4월 1일

서론

2주차 - Java (03/24 ~ 03/31)

자바 강의와 문제풀이를 통해 자바 기초 문법과 코드 전반에 대한 이해에 집중한 한 주였습니다.

1. 수업 내용 정리

[Java]

자바는 연산의 방향은 왼쪽에서 오른쪽, 대임은 오른쪽에서 왼쪽으로 한다.
자바는 항상 변수의 값을 복사해서 대입한다

접근 제어자

  • public : 어디서나 접근 가능
  • protected : 상속관계이거나 같은 패키지에서 접근 가능
  • default : 같은 패키지에서 접근 가능
  • private : 같은 클래스 내부에서만 접근 가능
  • void : 리턴값 없음

오버플로우(Overflow)

  • 표현 가능한 값의 범위를 초과할 때 발생
byte num1 = 126;

num1++;    // 127 후의연산자
System.out.println("num1 = " + num1);

num1++;    // 127
System.out.println("num1 = " + num1);

num1++;    // -128
System.out.println("num1 = " + num1);

제어문

  • 조건문 : if, if-else, if-else if, switch
  • 반복문 :for, while, do-while, 중첩 반복 가능
  • 분기문 : break(반복 종료) / continue(다음 반복으로 건너뜀)

배열의 복사

  • 얕은 복사(shallow copy) : stack 의 주소값만 복사, 원본을 공유 할 목적
  • 깊은 복사(deep copy) : heap의 배열에 저장된 값을 복사, 원본과 사본을 분리하여 관리 할 목적

클래스와 객체

  • 클래스 : 객체를 만들기 위한 설계도
  • 객체 : 클래스로부터 생성되며 new 연산자를 통해 생성

객체지향프로그래밍(OOP: Object Oriented Programming language)

  • 캡슐화, 상속, 추상화, 다형성를 적용하여 유지보수성을 고려한 응집력 높고 결합도 낮은 객체 위주의 개발방식을 적용한 프로그래밍을 말한다.
  • 응집력 : 관련 있는 기능끼리 한 데 뭉쳐 정리한 것
  • 결합도 낮음 : 각 객체가 자유롭게 분리되고, 독립적으로 작동 가능한 상태

캡슐화(Encapsulation)

  • 캡슐화는 유지보수성 증가(낮은 결합도)를 위해 필드의 직접 접근을 제한하고, public 메소드를 이용하여 간접적으로 접근하여 사용
  • 필드에 직접 접근하지 못하도록 private 접근 제어자 사용
  • 만약 필드에 직접 접근하면 잘못된 값도 들어갈 수 있음

추상화(Abstraction)

  • 추상화는 현실세계의 복잡한 사건을 단순화하여 새로운 객체 지향 세계를 창조해나가는 과정
  • 중요한 것만 드러내고, 불필요한 세부사항은 숨기는 것

암묵적인 규칙

  • 변수/메서드: 낙타 표기법(camelCase), 동사형
  • 클래스: 첫글자 대문자, 명사형
  • 상수: 대문자 + 언더스코어 (ex. MAX_COUNT)
  • 가독성과 유지보수를 고려해 이름 설정

[Linux]

리눅스 기초

  • 리눅스는 유닉스(Unix)를 기반으로 만들어진 오픈 소스 운영체제(OS)
  • GUI - 그래픽 기반 사용자 인터페이스
  • CLI - 명령줄 인터페이스
  • 쉘(Shell) : 사용자와 운영체제 간의 중간 계층을 형성하는 프로그램 또는 환경
  • 커널(Kernel) : 하드웨어 자원인 CPU나 메모리, 디스크, 네트워크 장치에 접근하고 제어하는 역할
    즉, 하드웨어의 인터페이스를 담당

CLI 명령어

[계정 명령어]
sudo su : /root 경로의 디렉토리
su <계정명> : 계정
sh / bash : 쉘로 바꾸기 / bash 쉘 실행

[업데이트]
sudo apt update : 업데이트
sudo apt install <패키지명>` : 패키지 설치

[주요 명령어]
pwd	: 현재 디렉토리 경로 출력 (Print Working Directory)
ls	: 파일/폴더 목록 보기 (-l, -a 옵션 자주 사용)
cd [폴더명] : 디렉토리 이동 (..: 상위 폴더, ~: 홈 디렉토리)
mkdir [폴더명] : 새로운 폴더 만들기
rmdir [폴더명] : 빈 폴더 삭제
rm -r [폴더명] : 폴더 및 하위 내용 삭제
touch [파일명] : 빈 파일 생성
cp [원본] [대상] : 파일 복사
mv [원본] [대상] : 파일 이동 or 이름 변경
rm [파일명] : 파일 삭제
find [경로] -name [파일명] : 파일 위치 찾기

2. 문제 풀이

Java - Math.random을 이용한 가위바위보, static에 대한 이해

풀이 : Math.random으로 1~3의 3개 난수 생성(int로 캐스팅하여 정수로 반환)
String으로 반환하기 위해 return 값에 String 구문으로 출력 연산
그리고, static은 프로그램 종료까지 남기에 Application 클래스에서 new연산자 생성 없이 바로 호출

static에 대한 이해

  • 프로그램이 시작할 때 초기화되고, 프로그램이 종료될 때까지 유지됨
  • 초기화는 한 번만 하고, 상태를 유지하고 싶기 때문
  • static에 대한 내용은 필수적인 부분은 빼고 잘 사용하지 말라는 것은 오버플로우 가능성이 있기 때문
    ps. 강사님 강의 내용과 ChatGPT 활용하여 개념이해

3. 마무리

> 해결된 부분과 아쉬웠던 점

수업 시간에 모르는 부분은 체크해두고, task식으로 질문하였더니 일정 부분 해결됐습니다.
그래도, 아직 수업시간을 따라가지 못하는 부분이 존재한다고 생각합니다.

> 개선할 점

저번 주와 동일하게 task관리와 컨디션 조절에 초점을 맞추도록 하겠습니다.

> 다음주 계획

  • 지난 MySQL 문제풀이 해결
  • JAVA 문제풀이 및 조원과 study를 통하여 개념 확립
profile
김지환

0개의 댓글