검색결과 리스트
문자열비교에 해당되는 글 1건
- 2011.04.14 equals vs == operation to java, c#
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
보통 숫자와 문자열을 비교할 때 ==이나 equals를 쓴다.
알고 있기로는 숫자를 비교할 때는 ==를 쓰고, 문자열을 비교할 때는 equals를 쓴다고 알고 있다.
그런데, 정확히 알고 있지 않아, 문자열을 비교할 때도 ==를 써서 동작할 때가 있고,
반대로 ==를 써서 같은 문자열이라도 틀린 것으로 간주되어 프로그램이 오동작하는 경험을 갖기도 한다.
요컨대, == 연산자는 객체(할당된 메모리주소)를 비교하고, equals는 값 자체를 비교하는 것이라고 정리하면 된다. 아래와 같이, java로 케이스별로 테스트를 해보았고, java, c#으로 테스트한 전체 소스는 첨부하도록 하겠다.
1. 숫자형 비교
int a = 10;
int b = 10;
if(a == b) TRUE
2. 문자형 비교
String a = "10";
String b = "10";
if(a == b) TRUE
if(a.equals(b)) TRUE
3. 다른 객체를 이용한 문자형 비교
String a = "10";
String b = new String("10");
// b변수의 경우 a와 같은 값을 가지고 있으나, 동적으로 생성했기에 메모리 주소가 다른 곳에 생성되었다.
if(a == b) FALSE
if(a.equals(b)) TRUE
new를 통해 생성된 문자열 뿐만 아니라, 기타 다른 함수들로 인해 문자열을 가공한 후 다른 객체로 반환하는 함수들이 많기 때문에 위의 예처럼 문자열을 항상 == 연산자로 비교한다는 것은 잠재적인 문제점을 안고 있다.
위에서 제시한 명제처럼 "숫자를 비교할 때는 ==를 쓰고, 문자열을 비교할 때는 equals를 쓴다"로 사용하되, 그 이유를 제대로 알고 있는 것이 중요하다 하겠다.
StringCompare.java
StringCompare.cs
추가) 2011.04.18
a.equals(b)와 같이 equals()로 비교하는 구분은 a가 NULL인지 먼저 확인해야 한다.
그렇지 않으면 NullPointException이 발생하게 된다.
또한, equals와 == operation 중에 equals의 수행속도가 조금 더 빠르다고 한다.
알고 있기로는 숫자를 비교할 때는 ==를 쓰고, 문자열을 비교할 때는 equals를 쓴다고 알고 있다.
그런데, 정확히 알고 있지 않아, 문자열을 비교할 때도 ==를 써서 동작할 때가 있고,
반대로 ==를 써서 같은 문자열이라도 틀린 것으로 간주되어 프로그램이 오동작하는 경험을 갖기도 한다.
요컨대, == 연산자는 객체(할당된 메모리주소)를 비교하고, equals는 값 자체를 비교하는 것이라고 정리하면 된다. 아래와 같이, java로 케이스별로 테스트를 해보았고, java, c#으로 테스트한 전체 소스는 첨부하도록 하겠다.
1. 숫자형 비교
int a = 10;
int b = 10;
if(a == b) TRUE
2. 문자형 비교
String a = "10";
String b = "10";
if(a == b) TRUE
if(a.equals(b)) TRUE
3. 다른 객체를 이용한 문자형 비교
String a = "10";
String b = new String("10");
// b변수의 경우 a와 같은 값을 가지고 있으나, 동적으로 생성했기에 메모리 주소가 다른 곳에 생성되었다.
if(a == b) FALSE
if(a.equals(b)) TRUE
new를 통해 생성된 문자열 뿐만 아니라, 기타 다른 함수들로 인해 문자열을 가공한 후 다른 객체로 반환하는 함수들이 많기 때문에 위의 예처럼 문자열을 항상 == 연산자로 비교한다는 것은 잠재적인 문제점을 안고 있다.
위에서 제시한 명제처럼 "숫자를 비교할 때는 ==를 쓰고, 문자열을 비교할 때는 equals를 쓴다"로 사용하되, 그 이유를 제대로 알고 있는 것이 중요하다 하겠다.
StringCompare.java
StringCompare.cs
추가) 2011.04.18
a.equals(b)와 같이 equals()로 비교하는 구분은 a가 NULL인지 먼저 확인해야 한다.
그렇지 않으면 NullPointException이 발생하게 된다.
또한, equals와 == operation 중에 equals의 수행속도가 조금 더 빠르다고 한다.
'프로그래밍' 카테고리의 다른 글
User Agent 정리 (0) | 2011.07.11 |
---|---|
한국의 프로그래머 분포 (0) | 2011.07.08 |
netstat (0) | 2011.03.24 |
DHCP Relay Agent - How Relay Agent Work (0) | 2011.02.18 |
배치파일로 대량 부하 테스트 (0) | 2010.11.23 |
RECENT COMMENT