Java지식

Java지식

Java의 effectively final이란?

최근 알고리즘 문제를 풀면서 스트림과 람다를 가끔 활용하곤 하는데, 위와 같은 경우를 몇 번 맞닥뜨리게 되었습니다. 읽어보면, "람다 표현식에서 사용하는 변수는 final이거나, effectively final이어야 한다..." 라고 하는데 이에 대해 알아보겠습니다. 순서는 그렇다면, effectively final은 무엇인지, 왜 람다 표현식에서 사용하는 변수는 final이거나, effectively final이어야 하는지 와 같겠습니다. effectively final effectively final은 람다 표현식이 등장한 자바 8에 함께 등장했습니다. 이는 final 키워드가 선언되지 않았지만, 값이 재할당되지 않아 final 변수와 유사하게 동작하는 변수를 의미합니다. 자바 언어 스펙을 살펴보면 ..

Java지식

기본 자료형과 참조 자료형

JVM과 메모리에 대해서 다루기 전에, 또한 GC에 대해 알기 전에, Java의 자료형에 대해 알아야 할 필요가 있다고 생각해 정리해보고자 합니다. 자료형의 종류 자바는 크게 기본 자료형(Primitive Type)과 참조 자료형(Reference Type)라는 2개의 자료형을 가집니다. 기본 자료형은 8가지(byte, boolean, char, int, short, long, float, double)가 있습니다. 그리고 위 8가지를 제외한 나머지는 모두 참조 자료형입니다. 또한 참조 자료형은 사용자가 직접 정의한 커스텀 자료형 또한 포함됩니다. 먼저 기본 자료형에 대해 간단하게 알아보겠습니다. 기본 자료형 기본 자료형에는 8가지가 존재합니다. 참, 거짓을 저장하는 boolean 실수를 저장하는 flo..

Java지식

Overloading과 Overriding

이번 시간에는 헷갈리기 쉬운 개념인 Overloading과 Overriding에 대해서 정리해보고자 합니다. Overloading 메소드 이름은 같지만, 파라미터 수, 타입은 다른 메소드를 중복으로 선언하는 것을 말합니다. 이러한 Overloading은 다음과 같은 특징을 가집니다. 메소드 이름이 같아야 합니다. 반환형은 같아도 되고, 달라도 됩니다. 파라미터 개수가 달라야 합니다. 파라미터 개수가 같은 경우, 각 데이터 타입이 달라야 합니다. public class OverloadingTest { void test() { System.out.println("매개변수가 없는 test()"); } void test(int a, int b) { System.out.println("매개변수 " + a + "와..

Java지식

절차적 프로그래밍과 객체 지향 프로그래밍

자바를 공부하는 예비 개발자로서 객체 지향 프로그래밍이 뭔지정도는 알고 있어야 하니까 한 번 정리를 해보려고 합니다.. 객체 지향과 함께 자주 등장하는 절차적 프로그래밍도 함께 다뤄보고요. 들어가기 전, 객체란 무엇이고, 절차란 무엇인지를 먼저 알아야겠습니다. 객체는 실제 세계를 모델링한 것이라고 표현합니다. 모델링된 어떤 주체를 객체라고 할 수 있습니다. 프로젝트를 하든, 알고리즘 문제를 풀든, 항상 어떤 일을 하는 주체가 있어야 할 것입니다. 이해를 돕기 위해, 제가 읽었던 책에(객체지향의 사실과 오해 - 조영호)서 다룬 예를 인용하면, "우리가 손님이 되어 카페에 갑니다. 사계절 내내 아이스 아메리카노밖에 못 먹는 저는 캐셔에게 아아 한 잔을 주문합니다. 이곳 카페는 상당히 규모가 커서, 캐셔는 주..

codingjavaman
'Java지식' 카테고리의 글 목록