본문 바로가기

728x90

Study/Java

(29)
Java 컬렉션 프레임워크인가 아닌가..? 2025년 01월 20일 직장 후배가 질문한 내용에 답변을 못했다.정말 어려운 질문이고 좋은 질문이지만 제대로 답변하지 못하여 공부하고자 만들어 본 포스팅이다.A. 선배님 자바 컬렉션 인터페이스는 개발자가 직접 호출하고 프레임워크 성격을 띄지 않고 있는거 같은데 왜 프레임워크라고 하는지 모르겠습니다. 자바 컬렉션을 직접 호출하여 사용하는 것만으로는 프레임워크의 특징은 "제어의 역전(Inversion of Control, IoC)"를 명확하게 느낄 수 없기 때문에 질문한 내용. 1. 프레임워크란?· 특정한 작업을 쉽게 할 수 있도록 설계된, 일련의 규칙과 구조를 제공하는 소프트웨어 시스템· 일반적인 구조를 제공하고, 세부적인 구현을 개발자가 확장하는 것!!구분설명구조코드 조직을 위한 체계적인 방식.표준화일..
Java Stream(스트림) I. Java Stream이란?· Java 8에서 도입된 기능으로, 컬렉션(Collection) 또는 배열과 같은 데이터 소스의 요소를 처리하고 변환하기 위한  선언적이고 함수형 스타일의 API· 스트림을 사용하면 코드가 간결해지고, 데이터 처리 작업을 병렬화하거나 효율적으로 수행할 수 있음. 1. 선언적 방식· 스트림 API는 for 또는 while 루프 대신 선언적으로 데이터를 처리한다.  (예: filter, map, collect) 2. 데이터 프름 중심· 스트림은 데이터의 흐름을 처리하기 위해 사용되며 데이터 자체를 변경하지 않는다.· 스트림은 원본 데이터를 변경하지 않는 불변성을 보장한다. 3. 중간 연산과 종결연산· 중간 연산(Intermediate Operation) : 다른 스트림을 반환..
Java 컬렉션 프레임워크란? I. Java 컬렉션 프레임워크@ Java Collection Interfaces의 정의와 특징.· Java 컬렉션 프레임워크는 다양한 데이터 구조를 관리하고 조작할 수 있는 클래스와 인터페이스의 집합이다.· Java 프로그램에서 데이터를 효율적으로 저장, 검색, 삭제 및 수정할 수 있는 방법을 제공한다.· 컬렉션 프레임워크는 크게 컬렉션 인터페이스, 구현 클래스, 유틸리티 클래스로 나눌 수 있다. @ Java 컬렉션 프레임워크의 사용목적.· 다양한 데이터 구조를 제공하여 효율적인 데이터 관리를 지원.  각 컬렉션의 특성과 사용 목적에 맞는 구현 클래스를 선택하고 활용하는 것이 성능을 최적화하는 데 중요 1. 컬렉션 인터페이스(Collection Interfaces) ·  컬렉션 인터페이스는 컬렉션의 동..
객체지향 프로그래밍 7장(30강 ~ 35강) ★다형성(polymorphism)★ - 여러 가지 형태를 가질 수 있는 능력 - 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 Tv t = new SmartTv(); // 타입 불일치 OK!! 객체와 참조 변수의 타입이 일치할 때와 일치하지 않을 때의 차이? SmartTv s = new SmartTv(); // 참조 변수와 인스턴스의 타입이 일치 Tv t = new SmartTv(); // 조상타입 참조변수로 자손 타입 인스턴스 참조 SmartTv인스턴스 -> 멤버 7개 모두 사용 가능 SmartTv 인스턴스 -> 멤버는 7개인데 5개 사용가능 일부만 사용할 수 있는데 뭐가 장점일까?? - 일단 차이만 이해하도록 하자. 다형성(polymorphism) 특징 - 자손 타입의 참조 변수로 조상 타입의 ..
객체지향 프로그래밍 7장(25강 ~ 29강) 패키지(package) - 서로 관련된 클래스의 묶음(Java8 기준으로 약 4000개 클래스) - 클래스는 클래스 파일(*. class), 패키지는 폴더. 하위 패키지는 하위 폴더 - 클래스의 실제 이름(full name)은 패키지를 포함.(java.lang.String) - 클래스 파일을 묶어놓은 것 jar 파일.. Java9부터 rt.jar 파일은 사라지고 module개념으로 변경 - 패키지 소스파일의 첫 번째 문장으로 단 한번 선언 package com.seulgae.ch07; - 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다. - 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속하게 된다. 컴파일러로 실행할때, C:\jdk11\work> java com.seulgae.ch..
객체지향 프로그래밍 7장(20강 ~ 24강) 상속(Inheritance) - 기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용) class 자식클래스 extends 부모클래스{ // ... } - 두 클래스를 부모와 자식으로 관계를 맺어주는 것. class Parent { } //부모클래스 class Child extends Parent{ // Child 클래스에 Parent 클래스를 상속받는다. // ... } - Child 클래스와 Parent 클래스는 상속관계에 있다고 이야기한다. - 자손은 조상(부모의부모)의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외) - 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.) class Parent{ int age; } class Child extends Parent{ // 자신의 ..
객체지향 프로그래밍 6장(16강 ~ 19강) 오버로딩(overloading)이란? - 한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것 우리가 평소에 쓰던 println println(1234); println("ABC"); 오버로딩이라는 기능이 있어서 매개변수를 참조하여 해당되는 메서드를 호출한다. 오버로딩이 성립하기 위한 조건 3가지 - 메서드 이름이 같아야 한다. // 오버로딩 아님, 메서드 중복정의 int add(int a, int b) { return a+b; } int add(int x, int y) { return x+y; } - 매개변수의 개수 또는 타입이 달라야 한다. - 반환 타입은 영향없다. //오버로딩x 반환타입은 영향없다. //결론은 이것도 중복정의.. int add(int a, int b) { return a+b; ..
객체지향 프로그래밍 6장(11강 ~ 15강) return문 - 실행 중인 메스드를 종료하고 호출한 곳으로 되돌아간다. - 반환 타입이 void라면 생략 가능하다. package com.seulgae.ch06; public class printGugudan { void printGugudan(int dan) { if(!(2

728x90