Java - throw와 throws의 차이점

throw와 throws 키워드는 비슷하지만 다른 용도로 사용됩니다. throw는 Exception을 발생시킬 때 사용하는 키워드입니다. 만약 어떤 연산을 하다가 예상치 못한 일이 발생했을 때 Exception을 발생시켜 예외가 처리될 수 있도록 합니다. 반면에 throws는 메소드를 정의할 때 사용하며, 이 메소드에서 발생할 수 있는 Exception을 명시적으로 정의할 때 사용합니다.

20 Sep 2020

Java - 접근제어자(Access Modifier)

Java의 접근제어자(Access Modifier)에 대해서 알아봅니다. 접근제어자는 클래스 내부 또는 외부에서 어떤 메소드나 필드(변수)에 접근을 제어합니다. 여기서 접근은 메소드를 호출하거나, 변수의 값을 읽거나 설정하는 것을 말합니다. 심지어 클래스도 접근을 제어하여, 외부에서 생성하게 하거나 못하게 하거나 결정할 수 있습니다.

15 Sep 2020

Gson - Java Object, JSON Object 변환

Gson은 JSON 구조의 객체를 Java 객체로 직렬화(Serialize), 역직렬화(Deserialize)를 도와주는 라이브러리입니다. 즉, JSON 객체를 Java 객체로, 또는 그 반대로 변환해주는 라이브러리입니다. Array를 Json으로, Map을 Json으로, Set을 Json으로 변환도 가능합니다. 또는 그 반대도 가능합니다.

12 Sep 2020

Java - final, finally, finalize의 차이점

Java의 final, finally, finalize는 전혀 다른 내용이지만, 이름이 비슷하여 헷갈릴 수도 있습니다. 이 글에서는 다음 내용들이 무엇인지, 어떻게 사용하는지 알아보겠습니다. final 키워드는 클래스, 메소드, 변수, 인자를 선언할 때 함께 사용할 수 있습니다. finally 키워드는 try-catch가 종료될 때 수행되는 block입니다. finalize()는 GC에 의해 호출되는 메소드입니다.

18 Jul 2020

Java - Static 키워드 이해하기

Java의 static keyword는 field, method, class에 적용할 수 있습니다. static 키워드의 공통점은 객체와의 분리입니다. 객체를 생성하지 않고 접근할 수 있습니다. 또한, 어떤 클래스 아래에 static 변수, 메소드, 클래스를 선언하여 관련있는 내용들을 한 곳에 모을 수 있습니다. static keyword를 사용하여 선언하였을 때 어떤 차이점이 있는지 알아보겠습니다.

18 Jul 2020

Java - Final 키워드에 대한 이해

클래스, 메소드, 변수에 final을 붙이면 시간이 지나도 처음 정의된 상태가 변하지 않는 것을 보장한다는 의미입니다. static 변수에도 final을 붙일 수 있으며, final 변수를 선언할 때 바로 초기화를 하지 않고 if문이나 생성자에서 초기화할 수 있습니다. Java8에서는 Effective final 기능이 추가되었으며 어떤 상황에서 일반 변수를 암묵적으로 final로 취급합니다.

04 Jul 2020

Java - Lambda, 익명 클래스에서 final 변수를 참조해야하는 이유

Lambda 또는 익명 클래스(Anonymous class)에서 외부에 정의된 변수를 참조할 때는 꼭 final, 또는 effective final 변수만 참조해야 합니다. non-final 변수를 참조하려고 하면 컴파일 에러가 발생하기 때문에 사용할 수도 없습니다. 왜 final을 써야 하는지에 그 이유에 대해서 알아보려고 합니다.

04 Jul 2020

Java - split, substring으로 문자열을 자르기 & 분리하기

String.split(), String.substring()으로 문자열을 자를 수 있습니다. 또한 Commons-io 라이브러리를 이용하여 문자열을 자를 수 있습니다. split은 정규표현식을 인자로 받으며, 그 문자열을 기준으로 String을 자를 수 있습니다. substring()는 index를 기준으로 문자열을 자릅니다.

24 May 2020

Java - Generics에서 Covariance, Contravariance 개념 이해하기

Generics에서 Invariance, Covariance, Contravariance의 개념을 설명하고 어떤 상황에서 이런 개념을 사용하는지 설명하려고 합니다. 이런 개념들은 클래스들의 상속관계에 따라서 Generics에서 객체의 관계를 결정하는 것을 의미합니다.

10 Apr 2020

Java의 Effectively final이란 무엇인가?

Java8에서 final이 붙지 않은 변수의 값이 변경되지 않는다면, 그 변수를 Effectively final이라고 합니다. Effectively final은 익명 클래스 내부에서 접근할 수 있습니다. 개발자의 의도를 알 수 있게 명시적으로 final을 붙여주는 것이 좋을 것 같은데요. 요즘 트렌드에 맞춰 추가된 기능인 것 같습니다.

09 Apr 2020

Java - 정규표현식(regex), 다양한 예제로 쉽게 이해하기

정규표현식(Regular expressions), Regex는 문자열에서 어떤 패턴을 찾는데 도움을 줍니다. Regex의 Metacharacters, Quantifiers, Grouping에 대해서 정리하였고 다양한 예제로 설명합니다. Regex는 대부분 알고 있지만, 적용할 표현들이 헷갈렸다면 이 글을 참고하시면 좋을 것 같습니다.

26 Jan 2020

Java - Thread 우선순위(Priority)를 설정하는 방법

쓰레드(Thread)마다 우선순위(Priority)를 다르게 설정할 수 있습니다. 시스템이 busy할 때 우선순위가 높은 쓰레드에게 먼저 CPU를 할당해 줍니다. 우선순위는 1부터 10까지의 숫자로 설정할 수 있으며 MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY의 static 변수를 제공합니다.

17 Nov 2019

Java - Runnable과 Callable의 차이점 이해하기

Thread는 Runnable과 Callable의 구현된 함수를 수행한다는 공통점이 있습니다. 하지만 Runnable은 어떤 객체도 리턴하지 않지만 Callable은 특정 타입의 객체를 리턴한다는 차이점이 있습니다. Thread 외에 ExecutorService도 이 둘을 구현 메소드를 수행할 수 있습니다.

03 Nov 2019

Java - Reflection 쉽고 빠르게 이해하기

자바의 리플렉션(Reflection)은 클래스, 인터페이스, 메소드들을 찾을 수 있고, 객체를 생성하거나 변수를 변경할 수 있고 메소드를 호출할 수도 있습니다. Reflection은 Class, Constructor, Method, Field와 같은 정보를 가져올 수 있습니다. 정보를 찾는 방법과 메소드 호출 및 변수를 변경하는 방법에 대해서 알아보겠습니다.

14 Oct 2019

Java - Try-with-resources로 자원 쉽게 해제하기

try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능입니다. 객체가 AutoCloseable을 구현하였다면 Java는 try구문이 종료될 때 close()를 호출해 줍니다. 코드를 간결하게 만들어 읽기 쉽고 유지보수가 좋은 코드를 작성할 수 있게 도와줍니다.

01 Oct 2019

Java - indexOf(), lastIndexOf()으로 문자열의 위치 찾기

자바 String의 indexOf()와 lastIndexOf()의 사용 방법에 대해서 정리하였습니다. indexOf와 lastIndexOf는 String에서 특정 문자열의 인덱스를 찾는데 사용하는 메소드입니다.

18 Jul 2019

Java - String의 startsWith(), endsWith() 사용 방법

자바 String의 startsWith(), endsWith() 메소드의 사용 방법 및 예제를 소개합니다. startsWith()는 어떤 String이 특정 문자열로 시작하는지를 boolean 타입으로 리턴해줍니다. 반대로 endsWith()는 특정 문자열로 끝나는지 boolean 타입으로 리턴해줍니다.

18 Jul 2019
codechachaCopyright ©2019 codechacha