2010-11-26 3 views
4

내 상사는 "문자열 박싱"(자바 상점)이라는 용어를 계속 사용하고 있으며, 내가 물어볼 때마다 (예를 들어, 내가 이미 알고 있다고 가정 할 때) 대개는 저를 본보기로 삼습니다. 나는 이론 물리학과 현 이론에 관한 결과를 찾기 위해서만이 용어를 봤다."문자열 박싱"이란 무엇이며 왜 그렇게 나쁜가요?

String/StringBuilders를 잘못 사용했거나 모범 사례를 따르지 않는 것과 관련이 있다고 추측합니다.하지만 내게있어서 그것이 무엇인지 파악할 수 없습니다.

답변

2

상사에게 문자열 박싱의 예를 묻지 않는 이유는 무엇입니까? 그가 제공 한 예제를 리펙토링하는 올바른 방법을 요청하는 것을 잊지 마십시오.

1

추측 : 불필요한 임시 개체 생성과 관련이 있으며,이 경우에는 문자열입니다. 예를 들어 토큰으로 String 토큰을 구성하는 경우 일반적으로 StringBuilder를 사용하는 것이 좋습니다. String이 빌더를 사용하여 작성되지 않은 경우, 각 연결로 인해 다른 임시 오브젝트가 작성되고 나중에 가비지 수집됩니다.

현대 VM (HotSpot 1.5 또는 1.6을 생각하고 있습니다.) 성능에 중요한 코드를 사용하거나 긴 문자열을 만들지 않는 한 거의 문제가되지 않습니다. in for 루프.

오직 추측입니다. 그 또는 그녀가 의미하는 것을 묻는 것이 더 낫지 않을까요? 나는 그 용어를 처음 들어 본 적이 없다.

+0

StringBuilder 's : 루프에있을 때 가치가 있습니다.코드가 S = A + B + C + D 만 수행하면 컴파일러는 영리하고 StringBuilder를 자동으로 사용합니다. 연결 루프가 있다면 컴파일러는 그렇게 영리하지 못합니다. – helios

+0

옙, for 루프에 관해서 막 편집되었습니다. 나는 원래의 대답이 너무 애매하고 약하다는 것을 깨달았다. – volley

4

문자열을 절단하고이를 조작하는 속어 용어입니다 "문자열 강타"

그것은 본질적으로 나쁘지 않아 등등, 분할, 결합, 삽입, 토큰 화를 구문 분석 ("학대"의 내포에도 불구하고) ,하지만 당신이 지적한대로 자바에서는 StringBuilder가 더 효율적일 때 String을 사용하지 않도록 조심해야합니다.

0

google에는이 문맥에서 문자열 bashing을 참조하는 몇 가지 결과가 있습니다. 비효율적 인 일시와 StringBuilder 사용에 대한 우려를 나타내는 것으로 보이지 않습니다.

대신 단순한 문자열 구문 분석을 나타냅니다. 나는. 부분 문자열을 확인하는 것과 같은 일을하는 것, 문자열을 자르는 것 등이 있습니다. 특히 문제에 대한 해킹 된 해결책이라는 암시가있는 것 같습니다.

실제 파싱을 사용하거나 비 문자열 형식으로 데이터를 가져와야하기 때문에 심하게 보일 수 있습니다.

1

문맥을 벗어난 "문자열 박싱"은 실제로 그 자체로 의미가 없습니다. 좋은 행동이나 나쁜 행동에 대해 윙윙 거리는 말은 아닙니다. 문자열 조작을 사용할 때와 마찬가지로 "bashing strings"를 의미합니다.

좋든 나쁘 든간에 현재 수행중인 작업에 따라 다르며 문자열의 역할은 실제로 중요하지 않습니다. 모든 종류의 데이터를 처리하는 좋은 방법과 나쁜 방법이 있습니다.

때로는 "bashing strings"가 실제로 최상의 솔루션입니다. 예를 들어, 문자열의 처음 세 문자를 골라 내고 싶다고 가정 해보십시오. 문자를 분리하는 정규 표현식을 만들 수도 있지만, 똑같은 작업을 수행 할 수있는 문자열 작업이 많기 때문에 무리가 있습니다. 훨씬 빠르고 쉽게 유지할 수 있습니다.

1

유효 자바에는 문자열 사용에 대한 항목이 있습니다 : "항목 50 : 다른 유형이 더 적합한 문자열을 피하십시오". 또한 stackoverflow : "Stringly typed".

관련 문제