long-n-thin / doit-algorithm-java

[두잇 자료구조와 함께 배우는 알고리즘 입문 - 자바 편] 스터디 내용 정리
1 stars 6 forks source link

1주차 어떤 함수를 호출할때, 자료형이 다른 변수를 하나의 함수에 넣으면 안되나요? #20

Open seongtaekkim opened 2 years ago

seongtaekkim commented 2 years ago

object 로 받으면 안되나?

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);
  }
}

java.util.Array.java

private static int binarySearch0(long[] a, int fromIndex, int toIndex, long key) {
  ...
}
private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {
  ...
}

int와 Integer는 무엇이 다른가

기본형 타입(Primitive type)
Wrapper class

boxing unboxing

int int1 = 100;

Integer int2 = int1; // boxing
int1 = int2 // unboxing

boxing이 가능하다면, 함수를 사용할때, 기본타입으로 호출해도 되지 않나?

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);
  }
}

자료형의 메모리 사용 용량

기본형
  | 타입 | 메모리 크기 | 기본값 | 데이터의 표현 범위 -- | -- | -- | -- | -- 논리형 | boolean | 1 byte | false | true, false 정수형 | byte | 1 byte | 0 | -128 ~ 127 정수형 | short | 2 byte | 0 | -32,768 ~ 32,767 정수형 | int(기본) | 4 byte | 0 | -2,147,483,648 ~ 2,147,483,647 정수형 | long | 8 byte | 0L | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 실수형 | float | 4 byte | 0.0F | (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 실수형 | double(기본) | 8 byte | 0.0 | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 문자형 | char | 2 byte (유니코드) | '\u0000' | 0 ~ 65,535

참조

https://www.infoworld.com/article/2077496/java-tip-130--do-you-know-your-data-size-.html


inhalin commented 2 years ago

https://stackoverflow.com/questions/59030895/c-sharp-is-overloading-methods-with-different-types-more-performant-than-using