본문 바로가기
반응형

IT 개인 공부95

[Java] 람다(Lambda) & 스트림(Stream)(1) 이번에 배워볼 내용은 JDK 8의 가장 큰 특징인 람다(Lambda)와 스트림(Stream)이다. 프로그래머스에서 다른 사람들의 풀이를 보면 가끔씩 보지 못한 이상한 문법들로 문제를 풀어낸 것을 볼 수 있다. 매번 저런 것도 있구나 하고 넘어갔었지만 이번 기회에 간단하게 한번 짚고 넘어가 보려 한다. ​람다 표현식(Lambda Expression)은 익명 클래스에서 발전된 개념으로 익명 클래스에 대해서 먼저 알아보자. ​ 익명 클래스는 단 하나의 객체만을 생성할 수 있는 클래스를 뜻한다. 자바에서 인터페이스를 구현하기 위해서는 인터페이스를 구현하는 클래스를 구현해 줘야 한다. 만약 인터페이스의 객체를 한 번만 사용할 것인데 이를 위해 클래스를 구현해야 한다면 비효율적일 것이다. 이를 개선하기 위해 굳이 .. 2021. 7. 12.
[Java] 가비지 컬렉터(Garbage Collector) C, C++은 개발자가 메모리를 직접 관리해야 하지만 Java에서는 개발자가 별도로 관리할 필요가 없이 JVM의 Garbage Collector에서 알아서 메모리를 관리해 준다. 가비지 컬렉터는 이름 그대로 쓰레기를 수집해 주는 뜻이다. 가비지 컬렉터를 이해하기 전에 쓰레기가 무엇을 뜻하는지 한번 알아보자. ​ Java에서 쓰레기는 Heap 메모리 영역에 생성된 객체들 중에 더 이상 참조되지 않는 객체들을 의미한다. 이게 무슨 뜻일까? 간단하게 다음과 같이 String 객체를 하나 선언했다고 하자. 이전 JVM 구조에서 메모리 영역을 공부할 때 스택 영역에는 지역 변수, 파라미터 등 임시 값, 힙 영역에는 new로 생성된 객체가 저장된다고 하였다. 1. String str = new String("Bef.. 2021. 7. 11.
[Java] JVM(Java Virtual Machine) 자바의 가장 큰 특징은 "Write Once, Run Everywhere!", 동일한 프로그램이 다양한 컴퓨터에서 실행이 가능하다는 점이다. 이를 가능하게 해주는 게 바로 JVM이다. ​보통의 프로그래밍 언어의 경우 소스 코드가 컴파일러에 의하여 기계어로 변환되어 컴퓨터에서 실행되도록 한다. 하지만 자바 컴파일러는 특정한 컴퓨터를 위한 코드를 생성하는 대신 가상적인 기계를 위한 코드를 생성한다. 이 코드는 바이트 코드(Byte Code), 중간 코드라고 불리며 자바 가상 기계(JVM)에 의해 해석되어서 실행된다. ​JVM이 바이트 코드를 해석한다는 것은 알겠다. 그렇다면 JVM의 구조는 어떤 식으로 이루어져 있으며 바이트 코드를 어떻게 해석하여 실행되도록 하는지 한 번 알아보자. JVM의 구성은 크게 4.. 2021. 7. 11.
[Java] final 키워드 Java에서는 상수(변경할 수 없는 값)를 표현하기 위해서 final 키워드를 사용한다. final 키워드는 변수, 메서드, 클래스에 사용할 수 있는데 각각 조금씩 의미가 다르다. ​이들의 차이에 대해서 한 번 알아보도록 하자. ​ final 변수 흔히 MOD, INF, MAXSIZE 등 변하지 않고 정해진 값(상수)을 표현하기 위해 사용하는 방식으로 변수 앞에 final 키워드를 붙여서 사용한다. 상수를 표현할 때는 자바 명명 관습(Java Naming Conventions)에 따라서 대문자를 사용하고 두 단어 이상 사용될 시 단어 사이에 언더바(_)를 사용하여 표현해 준다. public class Main { final int MOD = 10009; public static void main(Stri.. 2021. 7. 7.
[Java] final, finally, finalize Java에는 final 접두사가 들어가는 final, finally, finalize, 3가지 용어가 존재한다. 비슷한 이름 때문에 헷갈릴 수도 있는 이들에 대해서 한번 정리해보도록 하자. final final은 변경이 불가능하도록 해주는 기능으로 변수, 메서드, 클래스에 적용할 수 있다. 각 영역에 적용하면 다음과 같은 특징을 가지게 된다. finally finally는 try-catch 블록에 사용되는 문법으로 무조건 실행되는 블록을 정의해 주는 기능이다. ​ try-catch 블록은 try 문을 실행하다가 Exception이 발생하게 되면 즉시 catch 문이 실행되기 때문에 남은 try 문은 실행될 수 없다. BufferedReader br = null; try { br = new Buffered.. 2021. 6. 29.
반응형