java 13

자료구조/알고리즘 - Stack, Queue

데이터(data) : 문자, 숫자, 소리, 그림 등 실생활을 구성하고 있는 모든 값 1.자료구조 : 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것 -대부분의 자료구조는 특정한 상황에 놓인 문제를 해결하는데에 특화되어 있음 -많은 자료구조를 알아두면, 상황에 적합한 자료구조를 빠르고 정확하게 적용하게 문제를 해결할 수 있음 1-1.스택(Stack) -쌓다, 포개지다와 같은 뜻으로, 데이터를 순서대로 쌓는 자료구조 -대표적인 예시로 프링글스 -Stack의 특징 (1)LIFO(Last In First Out) : 후입선출 (2)데이터를 하나씩 넣고 하나씩 뺄 수 있음(한 꺼번에 여러 개 불가능) (3)하나의 입출력 방향을 가짐 -Stack의 메서드 (1)push() : 스택에 데이터 추가 (2)p..

부트캠프 2023.01.16

Java - Thread, JVM

어떤 애플리케이션이 실행되면 운영체제가 해당 애플리케이션에게 메모리를 할당해주며 애플리케이션이 실행되는데, 이처럼 실행 중인 애플리케이션을 프로세스라고 함. 프로세스 내에서 실행되는 소스 코드의 실행 흐름을 스레드라고 하며, 단 하나의 스레드를 가지는 프로세스를 싱글 스레드 프로세스, 여러 개의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 함. 즉, 프로세스는 실행 중인 애플리케이션을, 스레드는 하나의 코드 실행 흐름을 의미함 1.메인 스레드(Main Thread) -자바 애플리케이션을 실행하면 가장 먼저 실행되는 메서드는 main 메서드이며, 메인 스레드가 main 메서드를 실행시킴 -메인 스레드는 main 메서드의 코드를 처음부터 끝까지 순차적으로 실행시키며, 코드의 끝을 만나거나 return..

부트캠프 2023.01.10

Java - 파일 입출력(I/O)

자바에서는 입출력을 다루기 위한 InputStream, OutputStream을 제공함. 스트림은 단방향으로만 데이터를 전송할 수 있기에, 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요하고, 다루는 대상에 따라 종류가 나뉨. 가장 빈번하게 사용되는 FileInputStream과 FileOutputStream을 학습해보자. 1.FileInputStream : 파일로부터 바이트로 입력받아, 바이트 단위로 출력할 수 있는 클래스 2.FileOutputStream : 데이터를 파일에 바이트 스트림으로 저장하기 위해 사용하는 클래스 *각각 InputStream과 OutputStream의 자식클래스 위의 File 입출력 스트림은 바이트 기반 스트림(입출력 단위가 1byte)임. 하지만 Java에서 c..

부트캠프 2023.01.09

Java - Annotation, Lambda, Stream

1.애너테이션(annotation) : 소스 코드가 컴파일되거나 실행될 때에 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소 -애너테이션은 @로 시작하며, 클래스, 인터페이스, 필드, 메서드 등에 붙여서 사용할 수 있음 -프로그램마다 제공하는 애너테이션의 종류가 다름, 여기에서는 JDK가 제공하는 애너테이션중 중요한 것만 다룰 예정 1-1.표준 애너테이션 : JDK에 내장되어 있는 일반적인 애너테이션 (1)@Override -선언한 메서드가 상위 클래스의 메서드를 오버라이딩하거나 추상 메서드를 구현하는 메서드임을 컴파일러에게 알려주는 역할 -개발자의 실수로 메서드 이름이 잘못 작성될 경우를 대비해 에러의 원인을 쉽게 찾아내기 위해 사용 (2)@Deprecated -선언된 대상이 새로운 ..

부트캠프 2023.01.06

Java 컬렉션 프레임워크

1.컬렉션 프레임워크(Collection Framework) : 특정 자료 구조에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 등의 동작을 수행하는 편리한 메서드들을 제공 컬렉션 프레임워크는 주요 인터페이스로 List, Set, Map을 제공하는데, 이 셋 중에서 List와 Set은 서로 공통점이 많아 위 그림과 같이 Collection이라는 인터페이스로 묶임.(둘의 공통점이 추출되어 추상화된 것이 Collection 인터페이스) 1-1.List 인터페이스 : 배열과 같이 객체를 일렬로 늘어놓은 구조를 가짐 -객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제할 수 있는 등의 여러 기능을 제공함 -List 인터페이스를 구현한 클래스로는 A..

부트캠프 2023.01.04

Java 열거형, 제네릭, 예외 처리

1.열거형(enum; enumerated type) : 상수들을 보다 간편하게 관리할 때 유용하게 사용할 수 있는 자바의 문법 요소 *상수는 변하지 않는 값을 의미, final 키워드로 선언 -상수명의 중복을 피하고, 타입에 대한 안전성을 보장 -같은 효과의 다른 코드에 반해 훨씬 간결하고 가독성이 좋음 -switch문에서도 작동이 가능(사용자 정의 타입은 switch문 사용시 에러발생) *switch문의 조건은 char, byte, short, int, Character, Byte, Short, Integer, String, enum 타입 아래와 같은 예시로 사용 enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...} +상수명은 관례적으로 대문자로 작성 +각각의 상수들에는 자동적으로 0부터 시..

부트캠프 2023.01.04

Java 객체지향 프로그래밍 심화

앞서 기초 파트에서 객체지향 프로그래밍의 근간이 되는 클래스와 객체를 배웠고, 이를 바르게 정의하기 위해 필요한 변수와 메서드, 그리고 변수 초기화를 위한 생성자에 대한 내용을 학습했다. 이번 심화 파트에서는 객체지향 프로그래밍 설계를 지탱하는 핵심적인 4가지 기둥인 상속성, 캡슐화, 다형성, 추상화를 정리해보자. 1.상속(Inheritance) = 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소 가장 단순한 형태를 생각해보면, 두 클래스를 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 것을 의미함. 이 때, 두 클래스를 서로 상속 관계 있다고 하며, 하위 클래스는 상위 클래스가 가진 모든 멤버를 상속받게 됨. 위의 그..

부트캠프 2022.12.29

Java 객체지향 프로그래밍 기초 2

1.생성자(Constructor) : 객체를 생성하는 역할을 하는 클래스의 구성 요소로 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드 생성자는 메서드와 비슷한 구조지만 두 가지 차이가 있음 (1)생성자의 이름은 반드시 클래스의 이름과 같아야 함. (2)생성자는 리턴 타입이 없음. *무언가를 ‘리턴하지 않는다’를 의미하는 void와는 다르게 생성자는 아예 리턴 타입 자체가 존재하지 않기 때문에 void키워드를 사용하지 않음 생성자 기본 구조 예시 클래스명(매개변수) { ...생략... } 1-1.기본 생성자(Default Constructor) = 매개변수가 없는 생성자 *모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 함. *만약 생성자가 클래스 안에 포함되어 있지 않은 경우에는 자바 컴파..

부트캠프 2022.12.28

Java 객체지향 프로그래밍 기초

'모든 실재(實在)하는 어떤 대상'을 프로그래밍 언어에서는 객체(Object)라고 부른다. 객체지향적 프로그래밍은 프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 협력과 유기적인 상호작용을 통해 특정 기능을 구성하는 프로그래밍 방법론 *요약하면 코드들의 결합도를 낮춰 변화와 확장에 유연하게 대응하는게 목적 -장점 : 프로그램 개발 및 유지 보수에 드는 비용과 시간을 획기적으로 줄일 수 있고, 객체를 통해 데이터를 관리하여 데이터를 손실 없이 관리하기에 용이 1.클래스(Class) : 객체를 정의한 '설계도(blueprint)' 또는 '틀(frame)' *클래스는 객체 그 자체가 아니라 단지 객체를 생성하는 데 사용되는 하나의 틀임. *집의 설계도가 ..

부트캠프 2022.12.27

Java 배열

배열 : 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조를 의미 값들이 같은 의미를 지니면서 서로 연관성이 있을 때, 이들을 하나의 덩어리로 묶을 수 있으며, 이렇게 묶여진 값들의 집합 예시) 7월 한 달 동안 일별 최고기온을 저장 각 변수는 개별적으로 선언된 변수이므로 메모리 공간 상에 흩어져서 개별적으로 존재하게 됨. 하지만 배열을 사용하여 값을 저장하는 경우, 아래와 같이 메모리 공간 상에 연속적으로 값들이 모여서 저장됨. 배열을 통해 값들을 묶어서 저장한다는 것은 메모리 공간 상에 물리적으로 값들을 모아서 저장하는 것을 의미함. *요소(element) : 배열이 가진 각각의 값들 *인덱스(index) : 배열의 각 요소가 부여받는 순번 -배열과 관련하여 언급되는 ‘차원’이라는 것은 배열이 중..

부트캠프 2022.12.26