Open seongtaekkim opened 2 years ago
public static void main(String[] args) { Integer data1 = 100; function1(data1); function1("data");}public static void function1(Object data) { if(data instanceof Integer) { System.out.println((Integer)data+5); } else if(data instanceof String) { System.out.println((String)data+5); }}
private static int binarySearch0(long[] a, int fromIndex, int toIndex, long key) { ...}private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) { ...}
JAVA API에는 같은 로직이지만, 자료형만 다르게 오버로딩 해놓았다.
공식적인 size를 가지고 있다.
null 값이 존재하지 않는다.
wrapper class가 있다. (Integer 등)
primitive typye 변수는 thread의 stack memory에 저장된다
object를 상속하여 정의한 클래스이
null 값이 존재한다
heap memory에 저장된다
int int1 = 100;Integer int2 = int1; // boxingint1 = int2 // unboxing
public static void main(String[] args) { int data1 = 100; function1(data1);}public static void function1(Object data) { if(data instanceof Integer) { System.out.println((Integer)data+5); } else if(data instanceof String) { System.out.println((String)data+5); }}
int에 비해 Integer는 300%나 더 많은 메모리를 차지한다.
무분별한 boxing은 메모리를 낭비할 뿐이므로, 오버로딩을 하더라도 기본형을 사용하는 방법도 생각하자
( 유지보수, 사용빈도 등을 고려해야 할듯 하다)
https://www.infoworld.com/article/2077496/java-tip-130--do-you-know-your-data-size-.html
https://stackoverflow.com/questions/59030895/c-sharp-is-overloading-methods-with-different-types-more-performant-than-using
object 로 받으면 안되나?
java.util.Array.java
JAVA API에는 같은 로직이지만, 자료형만 다르게 오버로딩 해놓았다.
int와 Integer는 무엇이 다른가
기본형 타입(Primitive type)
공식적인 size를 가지고 있다.
null 값이 존재하지 않는다.
wrapper class가 있다. (Integer 등)
primitive typye 변수는 thread의 stack memory에 저장된다
Wrapper class
object를 상속하여 정의한 클래스이
null 값이 존재한다
heap memory에 저장된다
boxing unboxing
boxing이 가능하다면, 함수를 사용할때, 기본타입으로 호출해도 되지 않나?
자료형의 메모리 사용 용량
기본형
int에 비해 Integer는 300%나 더 많은 메모리를 차지한다.
무분별한 boxing은 메모리를 낭비할 뿐이므로, 오버로딩을 하더라도 기본형을 사용하는 방법도 생각하자
( 유지보수, 사용빈도 등을 고려해야 할듯 하다)
참조
https://www.infoworld.com/article/2077496/java-tip-130--do-you-know-your-data-size-.html