부트캠프 개발일기/Java15 19일차: 파일입출력(InputStream, OutputStream), 스레드(Thread) ❯ InputStream, OutputStream 자바에서는 입출력을 다루기 위한 InputStream, OutputStream을 제공함 스트림은 단방향으로만 데이터를 전송할 수 있으므로 입력, 출력을 위한 각각의 스트림이 필요함 FileInputStream 프로젝트(코드)와 파일(.txt)이 같은 디렉토리에 있을때, FileInputStream을 통해 해당 txt파일의 내용을 코드 내부로 가져올 수 있다. BufferedInputStream이라는 보조 스트림을 사용하면 성능이 향상된다. (아래 코드에서 (1)에 해당) Buffer란 바이트 배열로 여러 바이트를 저장해서 한번에 많은 데이터를 입출력할 수 있도록 돕는 임시 저장공간이다. public static void main(String args[]).. 2023. 3. 10. 18일차: 스트림(Stream) ❯ 스트림(Stream) 자바 8부터 도입된 문법으로 배열, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 하는 반복자. 데이터 소스가 무엇인지에 관계 없이 같은 방식으로 데이터를 가공, 처리할 수 있도록 도와줌 스트림의 특징 생성, 중간연산, 최종연산 세단계로 이루어짐 원본 데이터 소스를 변경하지 않음 일회용임(한번 사용 후 사라짐) 내부 반복자임 스트림의 생성 배열 스트림 생성 배열을 데이터 소스로 하는 경우 Arrays 클래스의 stream( )메서드 또는 Stream 클래스의 of( ) 메서드 사용 가능 String[] arr = new String[] {"a", "b", "c"}; // 문자열 배열 선언 및 할당 Stream stream1 = Arrays.stream(arr).. 2023. 3. 9. 17일차: Java 심화(Annotation, Lambda) ❯ 애너테이션(Annotation) 애너테이션이란, 소스코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소. @ 로 시작하며 클래스, 인터페이스, 필드, 메서드 등에 붙여서 사용함 표준 애너테이션 JDK에 내장되어 있는 일반적인 애너테이션 @Override : 메서드 앞에만 붙을 수 있으며, 선언한 메서드가 상위 클래스의 메서드를 오버라이딩 하거나 추상 메서드를 구현하는 메서드라는 것을 컴파일러에게 알려주는 역할. @Deprecated : 기존 사용하던 것이 다른 기술로 대체되어 더이상 사용하지 않도록 유도할 때 사용. @SuppressWaring : 컴파일 경고 메세지가 나타나지 않도록 사용. 경고가 발생할 것이 예상됨에도 묵인해야할 때 사용. ex. @Su.. 2023. 3. 8. 16일차: 컬렉션(Collection Framework) ❯ 컬렉션 프레임워크(Collection Framework) 컬렉션: 여러 데이터들의 집합. 여러 데이터를 그룹으로 묶어놓은것. 컬렉션 프레임워크: 컬렉션을 다루는데 편리한 메서드를 미리 정의해놓은것 ❯ List 인터페이스 List 는 데이터의 순서가 유지되며, 중복값 저장이 가능한 컬렉션 구현에 사용됨. Collection 인터페이스 구현. 배열과 같이 객체를 일렬로 늘어놓은 구조를 가짐. 객체 저장 시 자동으로 인덱스가 부여되고 인덱스로 객체를 검색/추가/삭제 등 가능 ArrayList 클래스 List 인터페이스를 구현한 클래스로, 객체가 인덱스로 관리된다는점에서 배열과 유사함 ArrayList는 객체가 추가되면 자동으로 저장용량이 늘어나며 데이터가 연속적으로 존재함(순서를 유지함) ArrayList.. 2023. 3. 7. 15일차: 컬렉션(Enum, Generic, Exception Handling) ❯ 열거형(Enum) 열거형(enum: enumerated type): 여러 상수(변하지 않는 값)들을 보다 편리하게 선언할 수 있도록 만들어진 자바 문법요소. 상수명의 중복을 피하고 타입에 대한 안정성을 보장함. switch문에서도 작동이 가능함 * switch문: 사용자 정의타입은 사용 불가 enum Seasons {SPRING, SUMMER, FALL, WINTER} // 값을 지정하지 않아도 자동으로 0부터 시작하는 정수값 할당 // 특정 상수에 접근하려면 열거형이름.상수명 으로 가능 ex. Seasons.SUMMER ❯ 제네릭(Generic) 타입을 구체적으로 지정하는 것이 아니라 타입 매개변수를 활용해 추후에 지정할 수 있도록 일반화 하는것. 작성한 클래스 혹은 메서드가 특정 타입에만 사용되지.. 2023. 3. 6. 14일차: 미니 프로젝트(의존성 주입) 자바에서 의존성 주입(Dependency Injection, DI)이란 객체 지향 프로그래밍에서 객체간의 결합도를 줄이고 유연성을 높이기 위한 설계 패턴 중 하나임 객체 지향 프로그램에서 사건(동작)은 객체간의 상호작용을 통해서 수행되는데 이 때 객체는 자신이 필요로 하는 다른 객체를 직접 생성하거나 참조함. 직접 객체를 생성하고 참조하게 되면 객체간 결합도가 높아짐. (코드를 수정하려면 코드 전체에 걸쳐 수정이 필요해짐) 의존성 주입은 이러한 문제를 해결하기 위해 객체가 필요로 하는 의존 객체를 외부에서 주입해주는 방식임 객체 스스로 필요로 하는 객체를 생성하는것이 아니라 외부에서 의존객체를 주입받아서 사용함 (별도의 인터페이스나 추상클래스를 생성해서 생성자 매개변수로 할당할 수 있음) 의존성 주입을 .. 2023. 3. 3. 이전 1 2 3 다음