java 8

[Java] 스트림 API - 기본

📍 스트림 API 시작스트림이란 데이터들이 흘러가면서 필터되고, 매핑된다. 그래서 마치 데이터가 물 흐 르듯이 흘러간다는 느낌을 받았을 것이다.참고로 흐르는 좁은 시냇물을 영어로 스트림이라 한다.import java.util.List;public class StreamStartMain { public static void main(String[] args) { List names = List.of("Apple", "Banana", "Berry", "Tomato"); // 스트림을 이용한 필터링 + 대문자 변환 + 수집 List result = names.stream() .filter(name -> name.startsWith("B")..

java 2025.06.02

[Java] 람다 VS 익명 클래스

📍람다를 쓸까 익명 클래스를 쓸까?1. 문법의 차이자바에서 익명 클래스와 람다 표현식은 모두 간단하게 기능을 구현하거나, 일회성으로 사용할 객체를 만들 때 유용하지 만, 그 사용 방식과 의도에는 차이가 있다. // 익명 클래스 사용 예Button button = new Button(); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {System.out.println("버튼 클릭"); }});익명 클래스는 클래스 선언하자마자 인스턴스를 생성하는 방법이다. 즉 하나의 클래스다. // 람다 표현식 사용 예Button button = new Button();button.s..

java 2025.05.12

[Java] 함수형 인터페이스

📍람다를 쓰기 위해 인터페이스를 만들자?자바에서 람다를 사용하기 위해선 반드시 함수형 인터페이스가 필요하다.가장 기본적인 사용 형태를 아래 예제에서 볼 수 있다.public class GenericMain1 { public static void main(String[] args) { StringFunction upperCase = s -> s.toUpperCase(); String result1 = upperCase.apply("hello"); System.out.println("result1 = " + result1); NumberFunction square = n -> n * n; Integer result2 = square.app..

java 2025.04.11

[Java] 람다가 필요한 이유와 생략 규칙

📍개요김영한님의 실전 자바 - 고급 3편 강의가 드디어 공개되었다.이번 편은 코딩 테스트나 실무에서도 빈번하게 활용되는 람다(Lambda)와 스트림(Stream)을 집중적으로 다루는 강의다.이번 기회에 강의를 따라가며 배운 개념과 인사이트를 정리하고, 내 코드에 적용하고, 기록으로 남겨두려고 한다.  📍자바에서 람다가 필요한 이유코드의 본질을 이해해보자.public static void helloJava() { System.out.println("시작"); System.out.println("Hello Java"); System.out.println("끝");}public static void helloSpring() { System.out.println("시작"); Sys..

java 2025.04.07

[Java] 튜닝의 마지막 단계 GC 알아보기

📍GC(Garbage Collection)란?프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 알아서 해제하는 것으로 GC는 메모리 관리 기법 중 하나다.여기서 동적으로 할당했던 메모리 영역은 프로그램 런타임에 사용되는 Heap 영역 메모리를 뜻하고,필요 없게 된 영역은 어떤 변수도 가리키지 않게 된 영역을 의미한다.C,C++의 경우 Heap 영역의 메모리를 관리하기 위해 코드 레벨에서 할당 받고, 해제해야 했다. (포인터)이렇게 수동으로 해제해야하는 경우 할당받은 메모리 영역을 제대로 해제하지 않아 memory leak이 발생하기도 한다.다행이 필자가 사용하는 Java나 Javascript 같은 언어에서는 동적 메모리 영역 해제를 GC가 대신 해준다.   📍GC가 왜 필요할까?또 어..

java 2025.02.05

[Java] Java 용어들을 알아보자. (JRE, JDK, JVM)

📍개요카카오 탐방 중 JVM과 GC와 같은 Java의 기본적인 원리가 무엇인지 설명할 수 있느냐는 질문에 말문이 막혔다.자바 파일을 운영체제 상관없이 사용하게 도와주는 프로그램이라는 것만 알고 그 이상 설명할 수 없었던 나 자신에게 충격받고, 기본적인 내용을 다시 한 번 정리해보려 한다.   📍JVM(java virtual machine)이 무엇일까?컴퓨터들은 모두 같은 기계어를 쓰는 게 아니다.C언어로 짜서 컴파일한 기계어인데 윈도우에서 돌아가게 컴파일한 것은 맥이나 리눅스에서는 안 도는 현상이 발생한다.그럼 어떻게 해야할까? 프로그램이 돌 환경을 생각해서 그 환경에 맞도록 기계어를 번역해줘야 한다. 그렇게 매우 번거롭다.이런 문제를 해결하기 위해 만들어진 게 자바의 JVM이다.쉽게 말하자면 각 종..

java 2025.02.01