컴퓨터공부/Kotlin & Java 34

HashMap은 call by reference를 사용한다.

HashMap의 리턴 값은 call by ref를 사용하기 때문에, 값을 변경하여도 다시 put을 사용하지 않아도 된다. In this example, the StringBuilder object is modified directly after being retrieved from the HashMap, and the changes are reflected in the value stored in the map. Note that you don't need to use the put method again to update the value in the map because you are working with a reference to the same object. public class HashMap..

Kotlin에서 변수 깊은 복사(Deep copy) 하기

Gson을 아래와 같이 이용하면 의도적으로 깊은 복사가 가능하다. class Animal{ fun clone(): Animal { val stringAnimal = Gson().toJson(this, Animal::class.java) return Gson().fromJson(stringAnimal, Animal::class.java) } } val originalAnimal = Animal() val clonedAnimal = originalAnimal.clone() 단어. 얕은 복사(shallow copy), 깊은 복사(deep copy) 참고 : https://velog.io/@ellyheetov/Shallow-Copy-VS-Deep-Copy 출처 : https://stackoverflow.com/..

@JvmOverloads: constructor 가 해주는 것

@JvmOverloads 어노테이션을 사용하면 여러 개의 constructor를 상속받는 번거로움이 줄어들고, xml inflation 시에도 문제가 발생하지 않는다. constructor를 직접 작성한 버전 class CustomView: View { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr) } @JvmOverloads..

String.hashCode()는 같은 값을 리턴합니다. 근데 왜 HashMap에서 쓰나요?

결론 먼저.. String.hashCode()는 중복된 값을 리턴할 수 있습니다. 하지만 HashMap에서 key로 String을 쓰셔도 됩니다. 왜냐면, HashMap은 hashCode(), == and equals() 를 이용해서 값을 저장할 entry lookup 을 선정하기 때문입니다. 즉, hashCode()값이 같아도, == 이나 equals() 함수를 통해서 다른 entry lookup으로 분기 된다는 것입니다. ------------------------------------------------------------------------------------------------------------------------- HashMap의 key를 String으로 쓸 기회가 있어서.. 이..

javac & java 컴파일러 사용법

핵심 먼저..ㅋㅋㅋ Java에서는 packagename과 폴더 트리 구조를 강제 하기에 이것을 맞춰줘야한다. javac로 .class를 만들 수 있다. 예를 들어, package com.company; public class JavaPractice { public static void main(String[] args) { System.out.println("Hello, world"); } } 위 클래스를 이용해서 아래처럼 입력하면 JavaPractice.class 파일이 생성된다. javac JavaPractice.java 이것은 바이트 코드로 여러 디바이스에서 실행할 수 있도록 해주는 이미지이다. 이제 이것을 실행하려면, java 파일을 이용해야 한다. 이 때, 아래 처럼 사용하면 된다. java -..

Pair Class가 없네??

Oracle java sdk에는 선언이 되어 있다는데.. 이 클래스가 없어서.. 굳이 sdk 버전을 바꾸고 싶지 않으면 아래 클래스를 추가 해서 사용하면 됩니다. public class Pair { private final K element0; private final V element1; public static Pair createPair(K element0, V element1) { return new Pair(element0, element1); } public Pair(K element0, V element1) { this.element0 = element0; this.element1 = element1; } public K getElement0() { return element0; } publ..

JVM에서 메모리 릭 정의

정의 : abandoned objects but still accessible(버려진 오브젝트지만 접근이 가능한 경우) 메모리 릭이 자주 발생하는 코드(아래 영상에서 발취함) Static variables Singleton classes that are holding onto your calss Registering yourself with a listener, but forgetting to remove it Any of these inner classes that for some reason may not end up stopping 발취 영상 : Deep Dive into Android Studio Profilers (Android Dev Summit '18) https://youtu.be/LGVb..

Android Room annotation 정리(어노테이션)

안드로이드 앱에서 SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 기능이다. SQLite 위에 만든 구글의 ORM(Object-relational mapping)이다. 룸을 사용하면 앱의 단일 정보 소스로 제공되는 캐시를 통해 인터넷 연결 여부와 관계없이 앱에 있는 주요 정보의 일관된 사본을 볼 수 있다. 룸의 구성요소는 Database, Entity, DAO 이다. Database // 데이터 베이스에서 사용하는 엔티티와 버전을 지정합니다. @Database(entities = [User::class], version = 1) abstract class UserDatabase : RoomDatabase() { // 데이터베이스와 연결할 데이터 접근 객체를 정의합니다. abstract f..

Volatile in Kotlin

@Volatile var tmpEndedAt: Long? = null 이렇게 사용하면 됩니다. Volatile이 뭔지 모르신다면,,, 무시 하셔도 됩니다.-0-;; ..... 아니면.. 아래 참고를 보세요. Volatile 참고 : blog.naver.com/PostView.nhn?blogId=classic2u&logNo=50003118713&parentCategoryNo=&categoryNo=15&viewDate=&isShowPopularPosts=false&from=postView m.blog.naver.com/PostView.nhn?blogId=kyed203&logNo=220053808209&proxyReferer=https:%2F%2Fwww.google.com%2F 출처 : stackoverflo..

Kotlin 코드를 Java 코드로 보는 방법

안드로이드에서 코틀린으로 작성한 코드는 JVM으로 자바 바이트 코드(Java Bytecode)로 변환되어 동작한다고 한다. 안드로이드 스튜디오에서 코틀린(Kotlin)으로 작성한 코드를 자바(Java) 코드 형태로 보고 싶을 경우 1. Tools > Kotlin > Show Kotlin Bytecode 메뉴로 접근 2. 또는 cmd + shift + A (Mac) / ctrl + shift + A (Windows) 단축키 후 > Kotlin Bytecode 3. 위 과정을 거치게 되면 오른쪽에 Kotlin Bytecode 사이드 바가 생기는데 변환하고자 하는 파일에서 Decompile 버튼을 클릭한다. 4. 버튼을 클릭하게 되면 자바로 변환된 코드가 생성되어 코드를 확인할 수 있다. 위 같은 과정으로 자..