전체 글

Never stop acting like the new one on the team
Kotlin & Java

중첩 클래스 와 내부 클래스 (부제 : ViewHolder 를 이너 클래스로 만들때는 왜 static class 로 만들까?)

클래스 내부에 다른 클래스를 두는 방법중 대표적인 2가지가 중첩 클래스(static class), 내부 클래스(inner class)가 있다. 부제에 대한 답 : 중첩 클래스는 가시성을 제한하거나, Item, Node, Element, ViewHolder 같은 일반적인 이름을 사용하면서 정돈된 상태를 유지하는데 아주 유용하다. 왜 일까? 그전에 중첩 클래스와 내부 클래스에 대해 간단하게 알아보자 중첩 클래스 물품(item)의 비용을청구하는 Invoice 클래스가 있다고 생각하고, 물품에는 설명, 수량, 단가가 포함되어 있다 이를 중첩 클래스로 표현하면 아래와 같이 된다. 그리고 public static 으로 선언한 것 말고는 내부에 클래스를 선언하는 것과 크게 다른 것이 없어보인다 public class..

Android/Development Tips

KOIN FragmentFactory 사용하기

2020년 07월 12일 수정 아래 커밋을 보면 어떤식으로 FragmentFactory 를 사용할 수 있는지 알 수 있다. https://github.com/Nanamare/CleanArchitecture/commit/52f173b7042583da288cc5a5b03e4b84b0f4d65c [Feature] Change Fragment Factory logic · Nanamare/CleanArchitecture@52f173b Permalink Browse files [Feature] Change Fragment Factory logic Loading branch information Showing 14 changed files with 129 additions and 51 deletions. +1 −1 ..

Kotlin & Java

자주 사용하는 String 클래스 함수

String 클래스는 Immutable 클래스 이기 때문에, 시그니쳐(Signature) 중 리턴 타입이 String 인 타입은 원본 객체가 바뀌는 것이 아니라, 새로운 객체를 만들어 반환 해준다. 이런 메서드를 접근자(accessor) 메서드 라고 한다. 호출 대상을 변경하는 메서드는 변경자(mutator)라고 한다 함수 설명 및 예제 boolean startWith(String str) boolean endsWith(String str) boolean contains(CharSequence str) 특정 문자열로 시작, 종료 하거나 지정한 문자열을 포함하는지 체크한다. int length() 문자열의 길이를 리턴한다 boolean equals() 문자열을 비교할 때 사용하는 함수로 같으면 true, ..

Kotlin & Java

자바 문자열 고찰 및 생각의 힘

자바를 처음 배울 때 "문자열 비교는 무조건 equals 를 사용해야 한다" 라고 배우기 때문에 왜 equals 를 사용해야 하는지 모르고 넘어가는 것 같다 아니, 왜 그럴까 생각 하는 사람들이 많지 않은 것 같다. 나 역시도 그랬고, 당연히 equals 를 사용해야 한다고 알고 있다. 근데 이런 단편적인 지식은 자바를 처음 배우는 사람들도 당연히 아는 지식이고, 결국 경력자임에도 불구하고 나는 자바를 처음 배우는 사람과 크게 다른 점이 없다는 생각이 들었다. class A { String a = "abc"; String b = "abc"; } 위와 같은 클래스가 있다고 가정하자. 개발자분들에게 if(a == b) { System.out.println("같다") } else { System.out.pri..

Kotlin & Java

자바 기본 타입 (Primitive type)

자바에서 가장 간단한 데이터 타입을 기본 타입이라고 한다. 기본 타임 중 네 가지는 정수 타입이고, 두 가지는 부동소수점 수 타입이며, 문자 타입(char), boolean 타입이다. 총 8가지이다 정수타입 타입 저장 공간 int 4 바이트 long 8 바이트 short 2 바이트 byte 1 바이트 보통의 경우는 int 로 처리되지만, 지구에 살고 있는 사람의 수를 표현한다면 long 을 사용해야 한다. byte, short 타입은 로우 수준의 파일 처리나 저장 공간이 귀한 상황에서 주로 사용된다. (long 타입으로 충분하지 않을 때는, BigInteger 클래스를 사용해야한다) 자바에서 정수 타입은 프로그램을 실행하는 머신과 관계가 없다. 이유는 자바는 write once, run anywhere ..

Kotlin & Java

간단하게 코루틴 알아보기

코루틴보통 코루틴을 경량화 스레드라고 자주 표현한다그럼 기존의 스레드는 무엇을 의미할까?기존의 스레드는 보통 OS 혹은 JVM 에서 생성되는 스레드를 의미하고, 이 스레드들은 매우 빠르고, 반응이 좋지만 비용이 크다.각 스레드는 생성, 해제(GC 수집시), 컨텍스트 스위치(스레드 실행 혹은 종료시에 스레드의 상태를 저장하고 복구하는 프로세스가 있다) 시에 CPU 타임과 메모리를 소모하는데, 이 비용이 상대적으로 높기 때문에 JVM 에서 돌아가는 프로그램들은 아주 많은 수의 스레드를 가지기 어렵다. 반면에 코루틴은 값을 반환할 수 있고 일시 중지(pause) 및 복귀(resume)할 수 있는 경량화된 스레드(정확하게 스레드는 아니고 함수이며, 비동기를 풀어나가는 코딩스타일중 하나고 그것에 초점을 맞춰 나온..

Algorithm

해당 요일 맞추기

문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예시) a b Result 5 24 "TUE

Nanamare
TEAM > SELF