본문 바로가기

Java8

[AI에게 물어본] Iterator vs Stream API AI에게 물어본 지식! 프로젝트 서비스단 로직 구현 중 급 고민 & 궁금쓰... GPT4에게 한번 슬~쩍 물어보았습니다. Iterator와 Stream API는 Java에서 컬렉션을 처리하는 두 가지 주요 방법입니다. 각각의 특징과 사용 시점에 대해 설명하겠습니다. 1. Iterator Iterator는 컬렉션의 요소를 순회하는 가장 기본적인 방법입니다. Iterator를 사용하면 컬렉션의 요소에 순차적으로 접근하고, 요소를 삭제할 수 있습니다. Iterator를 사용한 코드는 명령형 프로그래밍 스타일에 가깝습니다. 즉, '어떻게'를 기술하는 방식입니다. Iterator는 컬렉션의 상태를 변경할 수 있습니다. 예를 들어, iterator.remove() 메소드를 사용하면 현재 요소를 삭제할 수 있습니다.. 2023. 11. 30.
[UNGRAMMAR 세번째이야기]가장 좋아하는 언어를 자바라 🙌 자바를 Java~ '가장 좋아하는 언어'가 무엇이냐고 물었을 때! (물어보신 분이 궁금하다면?! 👉 https://songacoding.tistory.com/84) 부끄럽게도 저는 바로 이거다! 하고 떠오르는 언어가 없었어요...🫣🫢 자바를 시작으로 웹 개발자를 꿈꾸게 되었는데,, 왜 저는 바로 자바가 떠오르지 않았을까요...?? 자바에 대한 애정과 관심이 그만큼 부족 했던 것 같다는 생각이 드네요 🥺 🥺 🥺 그래서 이번에는 자바에 대한 마음을 잡아보는 시간을 가져보았어요! 본인의 '자바 애정도' 🫶 궁금하신 분들도 함께 ✍️체크해보아요~ 자바의 애'정' Point 😇 포인터의 존재가 없다 ! 가비지 컬렉터로 인해 더 이상 개발자가 메모리 관리를 해야 할 필요가 없다 ! 객체지향을 즐기기에 안성맞춤~(?.. 2023. 6. 20.
스프링 3계층은...스프링에게 000을 주입해달라고 대신 요청할때는... Spring과 진짜 초면인 우리 Controller, Service, Repository 스프링 3계층 클래스 ❶ 프로젝트 전체를 기반으로, 요기욧Controller / 요기욧Service / 요기욧Repository 이렇게 각 계층만 나누는 게 좋을까요? ❷ 도메인 별로, 음식Controller / 주문Controller ... 이런식으로 세세하게 나누는 게 좋을까요? 개인적인 의견) ➜ ❷ 도메인 별로 세세하게 나누는게 응집도가 높아지고 결합도는 낮아져서 유지보수하기 좋은 것 같아요~! (번외로 규모가 많이 작다면 세세한 구분보다 전체적으로 흐름 파악하기 쉽게 계층만 나누는 것도 효율적인 느낌..? 이라 고려해볼 수 있지 않을까 싶기도..) Controller에서 Service에게 일을 시키려면..... 2023. 4. 19.
@Override 넌 왜 필요하니? (오버로딩 아님 주의!) Spring과 진짜 초면인 우리 이름이 비슷하다는 이유만으로, 많이 비교를 당해온 오버라이딩과 오버로딩! (사실 정말 다른 두 친구라 비교 자체가 무의미하죠..) 그 중에서도 오늘은 '오버라이딩'에 대해 생각해보려고 합니다! 1. 오버라이딩이 뭔가요? 오버라이딩(Overriding)이란, 상위 클래스에 '이미' 정의된 메소드를 '하위 클래스'에서 '동일한' 이름과 매개변수로 '다시 정의'하여 사용하는 것을 말합니다 2. 오버라이딩을 구현하려면 @Override를 꼭 적어야 할까요? '자바'가 제공하는 기능 중 하나인 @Override '어노테이션'(Annotation)은, '컴파일러'에게 해당 메소드가 상위 클래스에서 선언된 메소드를 '재정의'하고 있다는 것을 '알리는' 역할을 합니다. 즉, 해당 어노테.. 2023. 3. 29.
객체지향의 특징 4가지 - 상속성 Spring과 진짜 초면인 우리 1️⃣ 캡슐화 2️⃣추상화 3️⃣ 다형성 4️⃣ 상속성 4️⃣ 상속성 상속성이란? - 기존의 클래스를 변경하여 새로운 클래스를 만들 때, 기존 클래스의 속성과 메서드를 상속받아 사용하는 개념 - 즉, 상속을 통해 코드의 재사용성을 높이고, 유지보수와 확장성을 개선할 수 있다. 'Language' 클래스를 추상 클래스로 선언하고, 'English', 'Chinese', 'Japanese' 클래스에서 'Language' 클래스를 상속받아 각각의 언어로 greeting을 하는 간단 예시 코드 'Main' 클래스에서는 'Language' 타입의 'language' 변수를 선언하고, 'English', 'Chinese', 'Japanese' 클래스를 객체 생성하여 'language.. 2023. 3. 28.
객체지향의 특징 4가지 - 다형성 Spring과 진짜 초면인 우리 1️⃣ 캡슐화 2️⃣추상화 3️⃣ 다형성 4️⃣ 상속성 3️⃣ 다형성 다형성이란? - 같은 이름의 메서드나 연산자가 다른 동작을 하는 것 - 다형성을 통해 객체지향 프로그래밍에서 코드의 재사용성과 유연성을 높일 수 있다 아래 코드에서 'Language' 클래스는 'sayHello()' 메서드를 가지고 있고, 이 클래스를 상속한 'English', 'Chiness', 'Japanse' 클래스에서는 'sayHello()' 메서드를 오버라이드 하여 다른 동작을 수행하게 된다. 이때, 'Language'타입의 변수 'lang1', 'lang2', 'lang3' 을 생성하고, 각각을 'English', 'Chiness', 'Japanse' 클래스의 인스턴스로 초기화하여 'sayHe.. 2023. 3. 28.
객체지향의 특징 4가지 - 캡슐화 Spring과 진짜 초면인 우리 1️⃣ 캡슐화 2️⃣추상화 3️⃣ 다형성 4️⃣ 상속성 1️⃣ 캡슐화 캡슐화란? - 객체의 속성과 기능을 한곳에 묶고, 외부에서 객체 내부 속성에 직접 접근하지 못하게 제한하는 것 - 즉, 객체 내부의 정보를 보호하기 위한 '캡슐화' 영어, 중국어, 일본어를 구사하는 사람들의 정보를 담은 클래스를 만들고,이를 캡슐화하여 보호한다고 가정하고 간단한 예시 코드를 작성해보았다 - Person 클래스 내에 name, age, language 멤버 변수를 'private' 접근제한자로 지정하여 '캡슐화' - 이 변수들은 클래스 외부에서 직접 접근이 불가능하고, getter / setter 메서드를 통해서만 접근 가능해짐 - printInfo() 메서드를 통해 멤버 변수들의 정보를 .. 2023. 3. 28.
객체지향의 특징 4가지 - 추상화 Spring과 진짜 초면인 우리 1️⃣ 캡슐화 2️⃣ 추상화 3️⃣ 다형성 4️⃣ 상속성 2️⃣ 추상화 추상화란? 중요한 특징을 찾아낸 후 간단하게 표현하는 것 내가 좋아하는 중국어,일본어, 영어를 예시로 추상화 잔행해보자! 중국어, 일본어, 영어를 위에서 정의하는 추상화에 맞춰보면, 중요한 특징 : 생각이나 느낌을 나타내거나 전달하기 위하여 사용하는 음성·문자·몸짓 등의 수단 또는 그 사회관습적 체계 즉, '언어'라는 개념으로 간단하게 표현해볼 수 있겠다. (언어 - 모국어/외국어등으로 나누는 등의 세부적인 사정은 잠시만 안녕) 언어의 중요한 특징 중, (생각이나 느낌을 나타내거나 전달하기 위하여 사용하는 음성·문자·몸짓 등의 수단 또는 그 사회관습적 체계) 음성을 speak 메서드로 하여 아래와 같이.. 2023. 3. 28.