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

Kotlin - Collections와 Sequences의 차이점

Java의 Collections는 Eager evaluation으로 동작합니다. Kotlin의 Sequences는 Java의 Stream처럼 Lazy evaluation으로 동작합니다. Lazy evaluation는 필요하지 않으면 연산을 수행하지 않기 때문에 더 적은 연산으로 동일한 결과를 얻을 수 있기 때문입니다. Collections와 Sequences는 동일한 값을 출력할 수 있지만 수행하는 과정이 다릅니다.

07 Jul 2020

Git - blame 명령어

git 프로젝트에서 어떤 코드를 누가 수정했는지, 어떤 commit으로 수정이 되었는지 궁금할 때가 있습니다. 이럴 때, git blame 명령어를 사용하면 누가 수정했는지, 어떤 commit으로 수정되었는지 알 수 있습니다. 수정 사항을 볼 때는 git show 명령어를 사용할 수 있습니다. 특정 라인만 확인하고 싶다면 -L <start, end> 옵션을 이용하시면 됩니다.

05 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

Android - Uri, Scheme, SSP(Scheme Specific Part) 정리

Android 개발을 하면서 사용하는 Uri, Scheme, SSP(Scheme Specific PART)에 대해서 정리하였습니다. Intent는 data라는 정보를 갖고 있습니다. data는 Uri로 표현되며, Uri의 구성 요소 중에 scheme, SSP가 있습니다. scheme과 host 등은 어렵게 느껴지지 않지만 SSP(Scheme Specific Part)는 낯설게 느껴질 수 있습니다.

03 Jul 2020

Android - 앱 설치, 삭제 이벤트 받기 (BroadcastReceiver 인텐트 받기)

안드로이드 시스템은 앱을 설치하거나 삭제할 때 PACKAGE_ADDED, PACKAGE_REMOVED, PACKAGE_REPLACED를 보냅니다. 또한 업데이트되는 경우 업데이트되는 앱으로는 MY_PACKAGE_REPLACED가 전달됩니다. 그리고 디바이스에서 완전히 앱이 삭제될 때 PACKAGE_FULLY_REMOVED가 전달됩니다.

01 Jul 2020
codechachaCopyright ©2019 codechacha