번역: Java 문자열에 관한 상위 10가지 질문
간단히 말하면, "=="는 두 문자열의 참조가 같은지 테스트하고, equals()는 두 문자열의 값이 같은지 테스트합니다. 두 문자열이 동일한 객체인지 확인하려는 경우가 아니면 equals()를 사용하는 것이 좋습니다.
문자열 지속성 메커니즘을 알고 있으면 더 좋습니다.
문자열은 변경할 수 없습니다. 즉, 일단 생성되면 가비지 수집기에 의해 정리될 때까지 그대로 유지됩니다. 배열을 사용하면 해당 요소를 명시적으로 수정할 수 있습니다. 이렇게 하면 보안에 민감한 정보(예: 비밀번호)가 시스템의 다른 곳에 표시되지 않습니다.
Java7의 경우 대답은 '예'입니다. JDK7부터는 String을 switch 문의 조건으로 사용할 수 있습니다. JDK6 이전에는 string을 switch 문의 조건으로 사용할 수 없었습니다.
// java 7 전용!switch (str.toLowerCase()) { 케이스 "a": 값 = 1; 케이스 "b": 값 = 2;
int n = Integer.parseInt("10");
간단히 말해서, 너무 자주 사용되어 때때로 무시되는 경우가 있습니다.
정규식을 사용하여 간단히 분해할 수 있습니다. "/s"는 " ", "/t", "/r", "/n"과 같은 공백 문자를 나타냅니다.
String[] strArray = aString.split("//s+");
JDK6에서 substring() 메서드는 기존 문자열을 나타내는 문자 배열에 대한 창을 제공하지만 새 문자열을 생성하지는 않습니다. 새 문자 배열로 표시되는 새 문자열을 만들려면 다음과 같이 빈 문자열을 추가하세요.
str.substring(m, n) + ""
그러면 새 문자열을 나타내는 완전히 새로운 문자 배열이 생성됩니다. 위의 접근 방식을 사용하면 가비지 수집기가 사용하지 않는 큰 문자열을 수집하고 하위 문자열만 유지하기 때문에 코드가 더 빨라지는 경우가 있습니다.
Oracle JDK 7에서는 substring()이 기존 배열을 사용하지 않고 새 문자 배열을 생성합니다. JDK 6 및 JDK 7의 substring() 메서드의 다이어그램은 JDK 6과 JDK 7의 substring() 간의 차이점을 보여줍니다.
문자열 대 StringBuilder: StringBuilder는 변경 가능합니다. 즉, 생성 후에 해당 값을 변경할 수 있습니다.
StringBuilder 대 StringBuffer: StringBuffer는 동기식이므로 스레드로부터 안전하지만 StringBuilder보다 느립니다.
Python에서는 문자열에 숫자를 곱하여 문자열을 반복할 수 있습니다. Java에서는 Apache Commons Lang 패키지에 있는 StringUtils 클래스의peat() 메소드를 통해 문자열을 반복할 수 있습니다.
문자열 str = "abcd"; 반복된 문자열 = StringUtils.repeat(str,3);//abcdabcdabcd
String str = "2013년 9월 17일"; 날짜 날짜 = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);System.out.println(date);//Tue Sep 17 00:00 :00 EDT 2013
Apache Commons Lang 패키지의 StringUtils 클래스를 사용합니다.
int n = StringUtils.countMatches("11112222", "1");System.out.println(n);
추가 질문: 문자열에 대문자만 포함되어 있는지 감지하는 방법
번역: Java 문자열에 관한 상위 10가지 질문