Java

Java

(Java) Garbage Collection

자바에는 아니 JVM에는 Garbage Collector(GC)가 있습니다. GC의 역할은 Garbage Collection 즉, 쓰레기를 모으는 역할을 하는데요, 프로그래밍에서의 Garbage는 메모리가 될 것입니다. 즉, 동적으로 할당한 메모리 영역 중 더이상 사용되지 않는 영역을 탐지하여 해제하는 것이 바로 GC의 기능입니다. 그럼 동적으로 할당된 메모리는 무엇일까요? 그러려면 JVM의 구조에 대해서 알아야 합니다. (Java) JVM 구조와 이해 오늘은 JVM의 구조에 대해서 적어보려 한다. 이전에 간략하게나마 JVM 구조에 대해 적은 것이 있으니 참고하는 것도 좋을거 같다. JAVA - JVM에 대해 알아보자 -1 Java에 대해 알고 있는가? 자바는 썬 mirrorofcode.tistory.c..

Java

(Java8) 자바 8에서 변경된 인터페이스(1) + 이펙티브 자바

자바 8 버전이 되면서 인터페이스에서도 변경이 생겼습니다. 대표적으로 눈에 띄는 것이 기본 메서드 지원(default method)과 static 메서드 지원이 있습니다. 이번 문서에서는 기본 문서와 static 메서드를 지원함으로써 가능한 것들에 대해 알아보려고 합니다. 🧑‍💻상속, 구현에 용이한 기본 메서드 public interface Foo { void sayHelloTo(String name); } sayHelloTo라는 추상 메서드를 가진 Foo 인터페이스가 있습니다. 그리고 이 클래스를 여럭 곳에서 상속받아, 이를 구현하고 있다고 생각해봅시다. 그럼 자바 8이전에는 다음과 같이 사용해야 했을 것입니다. public class FooImpl implements Foo { @Override vo..

Java

(Java 8) 자바 8에 추가된 함수형 인터페이스(Function, Predicate 등)

Java는 각 버전마다 새로운 기능이 추가되고 있지만 가장 큰 변곡점은 Java 8 버전이라고 할 수 있습니다. Java 8버전에는 함수형 인터페이스, 람다 표현식, LocalDatetime, stream, Optional 등이 추가되면서 더욱 코드를 간결하면서 효율적이게 작성할 수 있게 되었습니다. 이 문서에서는 '함수형 인터페이스와 람다 표현식'에 대해서 알아보려고 합니다. '함수형'이 무엇인지 궁금한 분들은 아래 문서를 참고 바랍니다. (함수형 코딩) 1장/ 함수형 사고란 무엇인가? 책을 펴고 1장을 펴면 다음과 같은 챕터에 대한 설명을 볼 수 있다. 이 장에서는 함수형 사고가 무엇인지, 왜 함수형 사고가 더 좋은 소프트웨어를 만들려는 개발자에게 도움이 되는지 설명합니 mirrorofcode.tis..

Java

(Java) Interface와 Abstract class의 차이(인터페이스와 추상클래스)

백엔드 개발자이고 면접을 준비하고 있거나, 면접을 봐본 사람이라면 이 질문에 대해서 고민 해봤을 것이다. 언뜻 보면 둘이 비슷하게 생겼다. 외부적으로는 선언된 방식이 interface냐 abstract class냐의 차이가 있지만 말이다. 그럼 각각에 대해서 알아보도록 하자. 🧐Interface 먼저 인터페이스 코드를 보자. public interface Dog { void bark(); void walk(); } Dog라는 interface에는 두가지 메서드가 있다. 하나는 bark(), 하나는 walk() 각각의 메서드는 추상 메서드인가? 앞에 abstract가 없는데도 추상 메서드인가? 그렇다. interface가 가지고 있는 메서드는 모두 추상 메서드이다. 그럼 정말 모두 추상 메서드일까? 다음의..

Java

(Java) JVM 구조와 이해

오늘은 JVM의 구조에 대해서 적어보려 한다. 이전에 간략하게나마 JVM 구조에 대해 적은 것이 있으니 참고하는 것도 좋을거 같다. JAVA - JVM에 대해 알아보자 -1 Java에 대해 알고 있는가? 자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.(순수 객체 지향 언어X) 91년 그린 프로젝트라는 이름으 mirrorofcode.tistory.com 오늘은 이런 원론적인 얘기를 하려는 것은 아니고 실제로 JVM이 어떻게 구성되어 있는지를 알아보려고한다. 윗 글을 읽기 귀찮은 분들 위해 간략하게 JVM이 무엇인지에 대해 설명하면 운영체제 위에서 동작하는 자바를 위한 운영체제라고 생각하면 편할거 같다. 일반적으로 계층이 Program - OS - HW ..

Java

(Java) StringBuilder 문자열 만들기

왜 자바는 String += char가 안 될까? (정말 답답하다 C++도 되는데..) 고맙다고 해야할지 모르겠지만, 이와 비슷한 StringBuilder라는 것을 만들어 두었다. StringBuilder에 대해서 알아보자. import java.util.*; class Main{ public static void main(String[] args) { char[] arr = {'a', 'b', 'c', 'd'}; String s = ""; StringBuilder stringBuilder = new StringBuilder(); for(char c : arr) { stringBuilder.append(c); } s = stringBuilder.toString(); } } StringBuilder는 클..

Java

(Java) 문자열 잘라 배열에 저장

코딩 테스트 혹은 알고리즘 문제를 접하다보면 무수히 많은 문자열 문제를 접하게 된다. 자바는 언어 중에서 좀 문자열에 불친절한 언어이기 때문에 답답할 때가 종종 있다. 하지만 어쩌겠는가, 어차피 쓸거 잘 써보자. 자바에서는 문자열을 자르는 방법에는 크게 2가지가 존재한다.(delimiter로) 첫 번째는 split을 사용하는 것이고, 두 번째는 StringTokenizer를 사용하는 것이다. 그럼 split부터 알아보자. 🏴󠁩󠁤󠁪󠁷󠁿String.split() 자바 String에는 기본 메서드로 split을 제공해준다.(고맙다) 그리고 이 split은 배열은 반환한다.(개꿀) class Main { public static void main(String[] args) { String s = "abc def..

Java

logging이란?

🏴󠁩󠁤󠁪󠁷󠁿Debugging에 대한 이해 아이러니하게도 Logging에 대한 이해가 있으려면 Log에 대해 알아야하고, Log에 대한 이해가 있으려면 Debugging에 대한 이해가 있어야한다. 그럼 디버깅이 뭘까? De + bug + ing 버그는 실행파일 안에 존재하는 오류들을 버그라고 한다. 그래서 디버깅은 이 오류들을 제거하거나 억제하는 행위라고 할 수 있다. 그럼 왜 로그와 디버깅이 연관관계가 있을까? 그것은 바로 디버깅의 과정을 로그를 확인하며 진행하기 때문이다. 🏴󠁩󠁤󠁪󠁷󠁿Log에 대한 간단한 이해 로깅이 무엇인지 이해하기 위해서는 '로그'가 뭔지 알고 있어야한다. 로그가 뭘까? 로그는 '정보를 제공하는 일련의 기록'(from HowToBeAProgrammer)이다. 그러니까 시스템상에서 일..

후;
'Java' 카테고리의 글 목록