[Java] String의 불변성은 SCP로부터
·
Java
들어가기 전에 James Gosling은 2001년 아티마 사의 회장이자 개발자인 Bill venners와 한 인터뷰에서 언제 불변성과 변성을 사용해야 하는지에 대한 질문에 이렇게 답변했다. I would use an immutable whenever I can. 그리고는 불변성이 가지는 장점에 대해 계속해서 설명했다. Java에서의 문자열은 불변성을 가진다. 이런 특성으로 기존의 문자열을 수정하면 새로운 객체가 생성된다. String example = "hello"; System.out.println(example.hashCode()); example = "hello again"; System.out.println(example.hashCode()); 출력 값 : 99162322 1773533842 객..
[Java] Method Area, PermGen 그리고 Metaspace
·
Java
들어가기 전에 static 예약어는 전역적으로 사용하기 위한 변수나 메소드, 객체에 사용한다. Method Area에 저장되어서 JVM의 생성과 소멸에 맞춰서 라이프 사이클이 정해져있다고 다들 알고 있을 것이다. 나도 그렇게 알고 있었는데 검색을 하다 보니 처음 듣는 PermGen, Metaspace 같은 용어들이 나왔다. 알면 알수록 명확해지지 않고 헷갈리는 부분이 많았어서 나를 위해서도 그리고 나같이 잘 모르고 있던 분들을 위해 정리를 해보려고 한다. JVM memory structure 위의 그림은 우리가 흔히 볼 수 있는 JVM의 메모리 구조이다. 여기서 Heap과 Method Area는 있지만 PermGen과 MetaSpace는 보이지 않는다. 도대체 PermGen과 MetaSpace는 어디서 ..
JUnit5
·
Java
JUnit 이란? 자바 개발자의 93%가 사용하는 단위 테스트 프레임워크로 2017년 10월 JUnit5가 공개되었다. 스프링 부트 2.2버전 이상부터는 기본으로 제공한다. JUnit5 JUnit5는 java 8부터 지원하며, 이전 버전으로 작성된 테스트 코드여도 컴파일이 정상적으로 지원된다. 이전 버전과 다르게 JUnit5는 세 개의 서브 프로젝트로 이루어져있다. JUnit Platform - JVM에서 테스트 프레임워크를 실행하는 데 기초를 제공 - TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있음 JUnit Jupiter - JUnit5에서 테스트를 작성하고 확장하기 위한 모델 조합 JUnit Vintage - JUnit3와 JUnit4를 기반으로 돌아가는 플랫폼에 테스트 엔진..
[JAVA] 정규 표현식 - Matcher, Pattern, find(), group()
·
Java
정규 표현식이란? 정규 표현식은 특정한 패턴을 이루고 있는 문자들이 나열된 것으로, 글이 하나 있다고 가정할 때 그 안에서 내가 원하는 특정한 패턴의 문자를 찾을 때 사용한다. 자바에서 정규 표현식은 java.util.regex 패키지 안에 있는 클래스들을 활용하여 사용한다. 1️⃣ Pattern 클래스 : 패턴을 정의한다. 2️⃣ Matcher 클래스 : 패턴을 사용해 문자를 찾는 역할을 한다. 3️⃣ PatternSynctaxException 클래스 : 정규 표현식 패턴의 구문 오류를 나타낸다. 예제 1(Matcher, Pattern, find()) import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { p..
[JAVA] Guava를 이용한 표기법(네이밍컨벤션) 변경
·
Java
Guava: Google Core Libraries for Java 구아바는 구글에서 만든 코어 자바 라이브러리의 집합체이다. multimap과 multiset과 같은 새로운 컬렉션 타입들이나 그래프 라이브러리, 유틸리티, 캐싱 등 여러가지 요소들이 포함되어 있다. 구글 뿐만 아니라 여러 기업들에서 대부분의 자바 프로젝트에 폭넓게 사용된다. 참고해야 할 점 ※ JRE 버전은 1.8 이상이어야 함 ※ 안드로이드에 적용하려면 안드로이드 버전 구아바를 사용해야 함 Adding Guava to your build ✔️ Maven com.google.guava guava 31.1-jre 31.1-android ✔️ Gradle dependencies { // Pick one: // 1. Use Guava in y..