반응형

기본적으로 객체 비교시 == 연산자를 쓴게 잘못이다. --;;; ㅠ

그래도 덕분에 하나 배웠다.ㅋ



Integer i = 10;  ==> Integer i = Integer.valueOf(10);

Converting a primitive value (an int, for example) into an object of the corresponding wrapper class (Integer) is called autoboxing.

http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html



Integer객체 안에서 속도를 높이기 위해서 -128~127까지는 cache 된 데이터를 사용.

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#valueOf%28int%29

https://blogs.oracle.com/darcy/entry/boxing_and_caches_integer_valueof



# Integer vs int 비교 테스트.

private static void compareInt() {

int pInt = 127;

Integer oInt = 127;

Integer cInt = new Integer(127);

Integer oInt2 = 127;

Integer cInt2 = new Integer(127);


System.out.println("====================== compare 127");

System.out.println("int vs Integer             : " + (pInt == oInt));

System.out.println("int vs new Integer         : " + (pInt == cInt));

System.out.println("Integer vs new Integer     : " + (oInt == cInt));

System.out.println("Integer vs Integer         : " + (oInt == oInt2));

System.out.println("new Integer vs new Integer : " + (cInt == cInt2));


pInt = 128;

oInt = 128;

cInt = new Integer(128);

oInt2 = 128;

cInt2 = new Integer(128);

System.out.println("\n====================== compare 128");

System.out.println("int vs Integer             : " + (pInt == oInt));

System.out.println("int vs new Integer         : " + (pInt == cInt));

System.out.println("Integer vs new Integer     : " + (oInt == cInt));

System.out.println("Integer vs Integer         : " + (oInt == oInt2));

System.out.println("new Integer vs new Integer : " + (cInt == cInt2));

}


결과..

====================== compare 127

int vs Integer             : true

int vs new Integer         : true

Integer vs new Integer     : false

Integer vs Integer         : true

new Integer vs new Integer : false


====================== compare 128

int vs Integer             : true

int vs new Integer         : true

Integer vs new Integer     : false

Integer vs Integer         : false

new Integer vs new Integer : false




반응형

'프로그래밍 > Java' 카테고리의 다른 글

buffer 사용법.  (3) 2015.05.20
[LINK] zero copy  (0) 2014.11.27
[Spring] MappingJacksonHttpMessageConverter 를 이용한 object <-> json 테스트.  (1) 2014.04.07
[spring] request life cycle  (0) 2014.03.24
이클립스 단축키  (0) 2014.03.24

+ Recent posts