C#, .NET

C++, C#, Java의 문자열 비교

휘사마 2011. 6. 17. 19:35
셋의 공통점 : 같은 문자열은 메모리에 하나의 공간만 할당된다.
예를들어 

string a = "aa";
string b = "aa";
if(a==b)
    Console.WriteLine("equal");

의 코드는 equal을 출력한다.

하지만 위와 같이 문자열 비교를 하다간 큰일난다.. compare 류의 함수를 쓰자!


<C++>
string
mutable 

<Java>
String
immutable

<C#>
string , String
immutable

Java와 C#에서는 문자열이 immutable 하므로
클래스가 제공하는 메소드를 통해서만 문자열을 조작할 수 있는데
이 때마다 새로운 instance가 만들어진다.
이는 + 연산을 할 때에도 마찬가지인데,
따라서 + 연산을 많이 하는 경우(for loop 을 돈다거나) 매우 비효율적이다.

그래서 StringBuffer, StringBuilder 와 같은 클래스가 존재한다.
얘네들은 mutable 하므로 인스턴스 하나를 가지고 계속 작업할 수 있다.