java

    Java CallByValue vs CallByReference

    Call-By-Value, Call-By-Reference란? CallByValue: 메소드 호출시 변수의 ‘값’을 전달하는 방식 (메소드 호출시에, 피호출자 메서드의 매개변수에 (본래) 호출자 변수의 복제값을 전달 하는방식) CallByReference: 메소드 호출시 변수의 주소값을 전달하는 방식 (피호출자 메서드의 매개변수에 (본래)호출자 변수의 주소(고유 식별자)를 메서드로 전달하는 방식) JVM 메모리에 변수가 저장되는 위치 먼저 Java에서 변수 생성 시 메모리에 어떤 식으로 저장되는지 알아보자. Java에서 변수를 선언하면 Stack 영역에 할당된다. 여기서 변수가 원시 타입(Primitive Type)이라면 Stack 영역에 변수와 함께 저장된다. 반면에 참조 타입(Reference Typ..

    Checked Exception vs UncheckedException

    에러와 예외 프로그래밍에서 예외란 입력 값에 대한 처리가 불가능하거나, 프로그램 실행 중에 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름을 어긋나는 경우를 말한다. 그리고 자바에서 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링할 수 있다. 그러나 에러는 시스템에 무엇인가 비정상적인 상황이 발생한 경우를 말한다. 주로 자바 가상 머신에서 발생하는 것이며, 예외와 반대로 이를 애플리케이션 코드에서 잡을 수 없다. 에러의 예시로는 OutOfMemoryError, ThreadDeath, StackOverflowError 등이 있다. 자바 예외 구분 checked vs unchecked 이번 글의 제목처럼 Exception은 Checked Exception과 Unchecke..

    정규표현식

    정규표현식 이란? 정규 표현식(regular expression, 간단히 regexp 또는 regex) 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다. 작성 방법 예제 예제1 - 전화번호 형식 (02|010)-\d{3,4}-\d{4} 02-123-1234 또는 010-1234-5678와 같은 전화번호를 위한 정규표현식이다. 간단히 말하자면 전화번호 형식이 맞는지 아닌지를 확인하기 위해서 만드는 패턴인 것이다. (02|010):첫 번째 부분을 '( )'을 통해 그룹으로 표현해 주었고, 해당 부분에서는 전화번호의 앞부분이 02와 010이 와야한다고 지정한 것이다. '-'는 전화번호를 표현할 때 쓰는 기호이므로 생략하겠다. \d{3,4}: '\d'를 통해 숫자임을 표현하여..

    Enum

    Enum 이란? enum은 열거형(enumerated type)이라고 부르며, 서로 연관된 상수들의 집합입니다. 그렇다면 왜 Enum을 사용할까요? 상수 정의를 하는 여러 방법들을 통해 우리는 enum의 등장 배경과 사용 이유를 알 수 있습니다. 여러가지 상수 정의 방법(Enum의 등장 배경) 1) 단순 타입 지정 형태 private static final int APPLE = 1; private static final int PEACH = 2; private static final int BANANA = 3; public static void main(String[] args) { int type = APPLE; switch (type){ case APPLE: System.out.println("app..

    Static

    왜 자바에서는 상수를 static final로 지정할까? Java에서는 상수표현을 static final로 쓰는 것이 일반적이다. 그리고 다들 그렇게 피드백 주신다. 그렇다면 왜 그래야할까? 여태 그냥 그런 가보다~ 하고 상수라면 응당 static final로 써왔는데 문득 의구심이 들었다. final은 변수가 아닌 상수 값이니 이해하겠는데, 왜 하필 static이어야 할까? static 이란? Static은 사전적 의미로 ‘고정된’을 뜻한다. 고정된 또는 정적 이라는 의미에 맞게 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 즉, 클래스 로더가 처음 클래스를 method area라는 메모리 영역에 저장할 때 함께 저장한 다는 뜻이다. static 관련 메모리 아래는 java가 os에..

    Junit5

    Junit이란? JUnit5는 자바 프로그래밍 언어용 유닛 테스트 프레임 워크로 자바8이상부터 사용가능하다. 5버전은 이전 버전과 달리 (JUnitPlatform + JUnitJupiter + JUnitVintage)로 구성되어 있다. JunitPlatform: JUnit 플랫폼은 JVM에서 테스트 프레임워크를 시작하기 위한 기반 역할을 한다.또 TestEngine(인터페이스) 플랫폼에서 실행되는 테스트 API를 정의하여 주고,이를 바탕으로 만든 사용자 테스트 코드를 실행 가능하도록 해준다.(jUnit platfrom 엔진 제공) JunitVintage: JUnit 3 및 JUnit 4 기반 테스트를 실행 하기 위한 를 제공합니다. jUnitJupiter: JUnit Jupiter 는 JUnit 5에서 ..