컴퓨터공부/Kotlin & Java 34

Kotlin : object keyword vs companion object keyword, and 익명 클래스

object 키워드 - 싱글턴(singletion; 인스턴스가 하나만 있는 클래스)을 선언하는 키워드 object MySingleton{ val prop = "나는 MySingleton의 속성이다." fun method() = "나는 MySingleton의 메소드다." } Companion object 키워드 - 클래스내의 객체 클래스(static이 아니다.... 하지만 비슷한 효과가 난다.) - 축약형이 가능 class MyClass2{ companion object{ val prop = "나는 Companion object의 속성이다." fun method() = "나는 Companion object의 메소드다." } } fun main(args: Array) { println(MyClass2.Com..

Java Generic, 자바 제네릭

더 자세한 것은 출처를 참고 하시면 됩니다. 아래는 제가 이해하기에 도움 되는 수준으로 정리 한 것입니다. 제네릭 클래스 public class 클래스 { ... } // 가장 기본적인 형태의 제네릭 클래스 class GenericClass{ private T t; T getValue(){ // 제네릭 class 내 에서는 제네릭 타입에 대한 리턴 정의가 편하다. return t; } } // Generic class를 상속 받으면 제네릭 타입도 같이 받아야 한다. class extendedClass extends GenericClass{ } // Generic class를 상속받고, 제네릭 타입 K 도 받는 형태 class extendedClass2 extends GenericClass{ private..

Kotlin for 문

kotlin은 java와 for 문법이 다르다.(하긴.. 다른 것도 다 다르다..) for(i in 1..10) { sum += i } for(i in 1..10){} // 1 ~ 10까지 for(i in 1 until 10){} // 1 ~ 9 까지 for(i in 1..10 step 2){} // 1부터 2씩 증가 하며 10까지 반복 for(i in 10 downTo 1){} // 10부터 1씩 감소 하여 1까지 반복 for(i in 10 downTo 1 step 2){} // 10부터 2씩 감소 하여 1까지 반복 for(str in list) { sb.append(str) } val list = listOf("Hello", "World", "!") for (i in list.indices) { pr..

Kotlin constructor 정리(코틀린 생성자 정리)

코드를 작성하다보니 아래와 같이 변수 선언에 관한것은 이해가 갔다. var class1 = A()// instance 선언 var class2 : A// 그냥 변수 선언(초기화 안됨) 근데.. 코드를 보다 보면 아래와 같은 코드가 나온다.. 이게 무슨 차일까...?? class A의 input를 받아서 class C로 넘겨 주는것 같은데.. input의 타입도 없고.. 뭐야.. 시부렁.. class C(var input: Int) : A(input) {} class D(var input: Int) : A() {} 여러가지 포스팅과 삽질을 하다가 모든게 코틀린의 복잡한 constructor에서 비롯된다는 것을 알게 되었다. 일단 코틀린은 아래와 같은 규칙(문법)이 존재한다.(근데 잘 안 알려줌-_-) 1...

코틀린 + 코루틴(Coroutines)

코틀린의 코루틴을 인터넷으로 검색해보면, 예제 소스가 대부분이 모두 MainActivity.kt에 있다. 실제 개발자 분들은 MainActivity.kt에서 코루틴을 안 쓸거다.(그렇게 쓰는 걸 봤다고?? 그 회사에서 당장 도망쳐라..) 근데 이론에만 그치는 포스팅에서는 모두 MainActivity.kt에 적고 있다.(이미 그런 포스팅은 넘치니 제발 쓰지 말자..) 아래 acaroom.net/ 의 링크에서는 Adapter에서 코루틴을 사용하고 있다. 그나마 참고 할 만하다. 개념은(여기 말고도 많이 있음..) codechacha.com/ko/android-coroutine/ 코루틴으로 데이터를 가져오는 실제 코드 예제는 acaroom.net/ko/blog/youngdeok/%EC%97%B0%EC%9E%A..

if(variable == null) on Kotlin

Kotlin에서 null 체크는 어떻게 할 지 궁금해졌다. 아마.. if(variable === null) 이 맞는것이겠지..? 그래서 찾아 보니.. if(variable == null) 을 쓰면 자동으로 if(variable === null) 변환해준다고 한다. Note that there's no point in optimizing your code when comparing to null explicitly: a == null will be automatically translated to a === null. 결론, if(variable == null) 과 if(variable === null) 둘 다 null 체크하는 것이다. 출처 : kotlinlang.org/docs/reference/equ..

JUnit 간단 사용법과 전역변수, @BeforeEach, @BeforeAll

JUnit 사용할 때, 허갈리는 전역변수와 @BeforeEach, @BeforeAll 에 대해서 알아보자. 요약 : 전역변수는 @BeforeEach의 효과 @BeforeEach는 각 테스트 함수가 불리기 전에 매번 호출 됨(JUnit4에서 @Before) @BeforeAll은 테스트 함수가 불리기 전에 딱 한 번 호출 됨(JUnit4에서 @BeforeClass) 출처 : https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations + 이제.. 실제로 그런지 확인해 봅시다. IntelliJ에서 원하는 함수를 선택하고 Generate를 선택하면 Test 메뉴가 보입니다. 그럼 아래 처럼 팝업이 뜨게 될 겁니다. OK 선택하시고. 원하..

LinkedList Class 사용법

아래 함수들만 있다는 것만 알고 있으면 될 것 같다. ArrayList class와 다른 점은 아래 처럼 처음 발견된 element를 삭제 할 수 있다는 것이다. (아래 두가지가 필요할 때를 제외하면 ArrayList class를 써도 될것 같다..) merged.removeFirstOccurrence(new int[]{1,2}); merged.removeLastOccurrence(new int[]{1,2}); LinkedList merged = new LinkedList(); merged.size(); merged.getLast(); merged.getFirst(); merged.removeFirst(); merged.removeLast(); merged.remove(2); merged.removeFi..