Mihaela Gheorghe-Roman은 Java 프로그래밍을 미로 탐험에 비유하며, 숨겨진 기능과 최적화 기법을 인터랙티브한 코딩 챌린지를 통해 탐색합니다. 🗺️
발표는 스트림, 동시성, 제네릭, 람다 표현식, 레코드, 컬렉션, 가상 스레드, 봉인된 클래스 등 최신 Java 기능들을 다룹니다. 💡
청중은 휴대폰을 사용하여 실시간 퀴즈에 참여하며, 코드 스니펫의 예상 결과나 최적화 방안을 제시하는 참여형 학습 방식을 채택합니다. 📱
챌린지에서는 AI 도구 사용을 금지하여, 참가자들이 직접 Java 코드의 작동 방식을 이해하고 기억하도록 유도합니다. 🚫
정적 변수 초기화 순서: 정적 블록은 코드에 나타나는 순서대로 실행되며, 나중에 선언되거나 할당된 값이 이전 값을 덮어씁니다. (예: value = 10 후 value = 20이면 최종 값은 20) 🔄
스트림의 partitioningBy와 정규식:Collectors.partitioningBy는 주어진 조건에 따라 컬렉션을 두 개의 리스트로 분할하며, 조건 메서드 내의 정규식 사용 방식이 결과에 큰 영향을 미칩니다. 🍎
코드 최적화 (병렬 스트림): 전통적인 for 루프를 parallelStream()으로 대체하면 여러 스레드를 활용하여 요소를 동시에 처리함으로써 성능을 향상시킬 수 있습니다. 🚀
제네릭의 타입 소거 (Type Erasure): Java의 타입 소거는 컴파일 시점에 제네릭 타입 정보를 제거하여, 원시 타입(raw type)을 통해 다른 타입의 객체를 저장할 수 있게 합니다. 이는 런타임에 ClassCastException을 유발할 수 있습니다. 👻
문자열 연결 및 연산자 우선순위: Java에서 + 연산자는 숫자 덧셈과 문자열 연결에 모두 사용되며, 문자열과 함께 사용될 경우 이후의 + 연산도 문자열 연결로 처리되지만, * (곱셈)과 같은 다른 연산자는 더 높은 우선순위를 가집니다. ➕✖️