코드스테이츠 - 3회차 백엔드 부트캠프 110

2022.09.16 금 - 스레드, 자바 가상 머신

📄 학습내용 스레드(Thread) 스레드(Thread)의 기본 개념 프로세스 : 현재 실행 중인 프로그램 스레드 : 프로세스에서 실행되고 있는 코드의 흐름 싱글 스레드 프로세스 : 스레드를 하나만 가진 프로세스 멀티 스레드 프로세스 : 둘 이상의 스레드를 가진 프로세스 메인 스레드 : 프로세스가 동작할 때 가장 먼저 동작하는 스레드(자바 프로그램 : main 메서드) 작업 스레드 : 메인 스레드 이외의 스레드 스레드(Thread) 프로세스 구성 : 데이터, 컴퓨터 자원, 스레드 스레드 : 프로세스가 확보한 자원과 컴퓨터 자원을 이용해서 코드 실행 싱글 스레드 프로세스와 멀티 스레드 차이 싱글 스레드만 가지는 싱글 스레드 프로세스는 메인 스레드만을 이용해서 작동 수행 멀티 스레드를 가지는 멀티 스레드 프로..

2022.09.15 목 - 애너테이션, 람다, 스트림, 파일 입출력

📄 학습내용 애너테이션(Annotation) 애너테이션(annotation) 다른 프로그램에게 정보 제공 테스트를 수행하는 프로그램 외의 다른 프로그램에게는 영향을 주지 않음 주석(comment) : 소스 코드를 읽는 사람에게 정보 제공 역할 컴파일러에게 문법 에러 체크하는 정보 제공 빌드 시 코드를 자동으로 생성할 수 있는 정보 제공 실행 시 특정 기능을 실행하는 정보 제공 종류 표준 애너테이션 : 기본으로 제공하는 애너테이션(자바 컴파일러에게 정보 제공하는 역할) 메타 애너테이션 : 애너테이션을 정의하는 애너테이션 사용자 정의 애너테이션 : 사용자가 직접 정의한 애너테이션 표준 애너테이션 메타 애너테이션 사용자 정의 애너테이션 @Override @Target @Deprecated @Documented..

2022.09.14 수 - 컬렉션 문제 풀기

🧶 발생한 문제 및 해결방법 문제점) 코드 실패원인 : 깊은 복사를 하지 않아서 해결방법) 깊은 복사 : 메모리 공간을 할당해서 "실제값" 복사 얕은 복사 : "주소값" 복사 문제점) 배열(array)를 어떻게 ArrayList로 변환하는가? 해결방법) Arrays.asList(배열명) 메서드 사용 Arrays.asList(arr); // Array(arr : 배열) -> ArrayList // ++) 추가 내용 ArrayList arrayList = new ArrayList(Arrays.asList(arr)); // 깊은 복사 ArrayList arrayList2 = new ArrayList(arrayList); // 깊은 복사 ArrayList arrayList3 = arrayList; // 얕은 복..

2022.09.13 화 - 열거형, 제네릭, 예외처리, 컬렉션

📄 학습내용 열거형(Enum) 열거형(Enum, Enumerated Type) : 상수들을 선언한 집합 특징 final 키워드 사용 가능 switch문에서 사용 가능 장점 편리하게 상수 선언 및 관리 상수명 중복 방지 타입에 대한 안전성 보장 선언 관례적으로 상수명은 대문자로 작성 자동적으로 정수값이 0부터 할당 enum 열거형_이름 { 상수명1, // 정수 0 할당 상수명2, // 정수 1 할당 상수명3, // 정수 2 할당 ... } // 열거형 선언 예시 enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY } 선언 열거형_이름.상수명 열거형_참조변수 참조변수명 = 열거형_이름.상수명; public class Test { public static vo..

2022.09.08 목 - 프로그램 작성

📄 학습내용 인터페이스의 default 메서드와 static 메서드 인터페이스의 default 메서드 상속 시 재정의 가능 상속 시 상속되서 default 메서드 사용 가능 인터페이스의 static 메서드 상속 시 재정의 가능 but 상속 시 자동으로 상속 불가능해서 재정의해서 사용 가능 → static 메서드 사용하려면 인터페이스.static메서드명 형태로만 호출가능 [Optional 심화 실습] 방문자 수 예측 프로그램 https://github.com/kung036/be-sprint-Ai_V1 https://github.com/kung036/be-sprint-Ai_V2 https://github.com/kung036/be-sprint-Ai_V3 [Optional 심화 실습] 유튜브 자막 순화 프로그..

2022.09.07 수 - 다형성, 추상화

📄 학습내용 다형성 일반적인 다형성 : 객체를 여러 가지 형태로 변화될 수 있는 성질 자바에서 다형성 : 어떤 타입의 참조변수를 통해서 다양한 타입의 객체를 참조할 수 있는 것 즉, 상위 클래스 타입의 참조변수가 하위 클래스 객체를 참조할 수 있는 것(역상황은 성립 X) 상위 클래스 타입의 참조변수가 하위 클래스 객체를 참조하는 하는 경우 → 객체가 사용할 수 있는 멤버의 개수 = 참조변수가 사용할 수 있는 멤버의 개수 = 상위 클래스의 멤버의 개수 다형성 예시 : 메서드 오버라이딩, 메서드 오버로딩 장점 : 중복되는 코드를 줄여서 코드 작성 용이 // 부모 클래스 class Parent { void print1() { System.out.println("print1"); } void print2() {..

2022.09.06 화 - 상속, 캡슐화

📄 학습내용 객체지향 프로그래밍 설계의 핵심 상속(inheritance) 캡슐화(encapsulation) 다형화(polymorphism) 추상화(abstraction) 상속 상속 클래스 재사용해서 새로운 클래스를 작성하는 방법 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 형태 조상-자손 관계, 부모-자식 관계 < 상위 클래스-하위 클래스 관계 (적절한 표현) 상속받았다 < 확장되었다 (적절한 표현) 클래스 메소드는 클래스에 속한 메소드이기 때문에 상속 불가능 장점 상위 클래스의 코드 재사용으로 하위 클래스 코드를 작성할 때 간결하게 코드 작성 가능 다형적 표현 가능 extends 키워드 - 상속 구현 키워드 class 하위_클래스 extends 상위_클래스 {} 단일 상속..

2022.09.05 월 - 생성자와 내부 클래스

📄 학습내용 생성자 생성자 : 인스턴스를 생성할 때 호출되는 인스턴스 변수를 초기화하는 메서드 조건 클래스명과 동일한 이름을 가져야함 return이 없음 제어자는 반드시 public으로 선언되어야 함 메소드와 마찬가지로 생성자도 오버로딩 가능 기본 생성자와 매개변수가 있는 생성자 기본 생성자 : 매개변수가 없는 생성자로, 클래스 내에 생성자가 없는 경우에는 자바 컴파일러가 자동으로 추가해줌 매개변수가 있는 생성자 : 매개변수를 받아서 객체 초기화에 사용됨 매개변수가 없는 생성자 : 매개변수 없이 객체를 초기화함 // 기본 생성자 - 자바 컴파일러가 자동으로 추가 생성자명 () {} // 매개 변수가 있는 생성자 생성자명(매개변수) { ... } // 매개 변수가 없느 생성자 생성자명() { .... } ..

2022.09.02 금 - 클래스와 객체

📄 학습내용 객체지향프로그래밍(OOP) 객체지향프로그래밍(OOP, Object Oriented Programming) 필요한 데이터를 추상화시켜 이를 사용하기 위해서 객체를 생성하고, 이렇게 생성한 객체들끼리 상호작용을 해서 원하는 기능을 구현하고자 하는 프로그래밍 방법론 클래스 객체를 구현하기 위한 틀 객체 클래스를 이용해서 생성한 실제하는 것이자 사용할 수 있는 실체 클래스와 객체의 차이점은? 클래스를 구현하기 위한 추상화된 틀이고, 객체를 클래스를 이용해서 실제로 존재하는 실체 클래스 인스턴스 & 인스턴스화 인스턴스 : 클래스를 이용해 생성한 객체 인스턴스화 : 클래스로부터 객체를 생성하는 과정 객체와 인스턴스의 차이점 객체는 인스턴스를 포함하고 있는 넓은 개념 인스턴스는 어떤 클래스로부터 생성된 ..

2022.09.01 목 - 배열

📄 학습내용 배열 배열이란? 같은 타입의 변수들의 집합 참조타입으로 메모리에는 배열이 저장된 주소값을 가지고 있음 요소 & 인덱스 요소 : 배열의 각 값들 인덱스 : 배열의 위치, 0부터 (배열의 길이 - 1) 1차원 배열 & 2차원 배열 1차원 배열 : 배열의 요소가 값인 경우 2차원 배열 : 배열의 요소가 배열인 경우 배열 선언 및 초기화 배열 선언 : 배열 선언만 할 경우, 메모리 공간 확보 및 메모리 이름 붙임 배열 초기화 : 배열의 값을 할당해서 메모리 공간에 배열의 시작 주소값을 가짐 int[] arr; //배열 선언 arr = new int[5]; //배열 초기화 1차원 배열 배열 선언 및 초기화 배열 선언 : 타입[] 배열명; 초기화 배열명 = new 타입[배열길이]; 배열명 = { 요소1..