자바 대체 공백
public class Solution {
public String replaceSpace(StringBuffer str) {
for(int k=0;k<str.length();k++)
{
char index=str.charAt(k);
if(index==' ')
{
str.replace(k,k+1,"%20");
}
}
return str.toString();
}
}
다음은 자바입니다.lang.StringBuilder.replace () 방법의 설명public StringBuilder replace(int start, int end, String str)
매개 변수StringBuffer 문자열 변수(스레드 보안)
StringBuilder 문자열 변수(비스레드 보안)
간단하게 말하면 String 유형과 String Buffer 유형의 주요 성능 차이는 String이 변할 수 없는 대상이라는 데 있다. 따라서 String 유형을 변경할 때마다 새로운 String 대상을 생성한 다음에 바늘을 새로운 String 대상으로 가리키는 것과 같다. 따라서 내용을 자주 바꾸는 문자열은 String을 사용하지 않는 것이 좋다. 왜냐하면 대상을 생성할 때마다 시스템 성능에 영향을 미치기 때문이다.특히 메모리에 인용되지 않는 대상이 많으면 JVM의 GC가 작업을 시작하는데 그 속도는 상당히 느릴 것이다.
StringBuffer 클래스를 사용하면 결과가 달라집니다. 매번 결과는 StringBuffer 대상 자체를 조작하는 것이지 새로운 대상을 생성하고 대상 인용을 바꾸는 것이 아닙니다.따라서 일반적인 상황에서 StringBuffer, 특히 문자열 대상이 자주 바뀌는 경우를 추천합니다.특정한 상황에서 String 대상의 문자열 결합은 JVM에 의해 StringBuffer 대상의 결합으로 해석되기 때문에 이런 때 String 대상의 속도는 StringBuffer 대상보다 느리지 않다. 특히 다음과 같은 문자열 대상 생성에서 String 효율은 StringBuffer보다 훨씬 빠르다.
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
String S1 대상을 생성하는 속도가 너무 빠르다는 것을 놀라게 될 것이다. 이때 String Buffer는 속도적으로 전혀 우세하지 않다는 것을 알게 될 것이다.사실 이것은 JVM의 수작이다. JVM의 눈에는 이것이String S1 = “This is only a” + “simple” + “test”; 사실:
String S1 = “This is only a simple test”; 그러니까 시간이 많이 필요 없지.그러나 여기서 주의해야 할 것은 문자열이 다른 String 대상에서 왔다면 속도가 그렇게 빠르지 않다는 것이다. 예를 들어 다음과 같다.
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
이럴 때 JVM은 규칙적으로 원래 방식대로 할 거예요.대부분의 경우 StringBuffer > String
StringBuffer
Java.lang. StringBuffer 스레드가 안전한 가변 문자 시퀀스입니다.String과 유사한 문자열 버퍼이지만 수정할 수 없습니다.임의의 시간에 특정한 문자 서열을 포함하지만, 어떤 방법으로 호출하면 이 서열의 길이와 내용을 바꿀 수 있다.
문자열 버퍼를 여러 스레드에 안전하게 사용할 수 있습니다.필요할 때 이 방법들을 동기화할 수 있기 때문에 임의의 특정한 실례상의 모든 조작은 마치 직렬 순서로 발생하는 것 같다. 이 순서는 관련된 모든 라인에서 진행되는 방법과 호출 순서가 일치한다.
StringBuffer의 주요 동작은 append와 insert 방법입니다. 이 방법을 다시 불러와서 임의의 형식의 데이터를 받아들일 수 있습니다.모든 방법은 주어진 데이터를 문자열로 효과적으로 변환한 다음 문자열의 문자를 문자열 버퍼에 추가하거나 삽입할 수 있습니다.append 방법은 항상 이 문자를 버퍼의 끝에 추가합니다.insert 방법은 지정한 점에 문자를 추가합니다.
예를 들어 z가 현재 내용이 "start"인 문자열 버퍼 대상을 인용하면, 이 방법은 z.append ("le") 를 호출하면 문자열 버퍼에 "startle"을 포함하고, z.insert (4, "le") 는 문자열 버퍼를 변경해서 "startlet"을 포함합니다.
대부분의 경우 StringBuilder > StringBuffer
java.lang.StringBuilde
java.lang. StringBuilder의 가변 문자 시퀀스는 5.0입니다.이 유형은 동기화를 보장하지 않으면서 StringBuffer와 호환되는 API를 제공합니다.이 클래스는 문자열 버퍼가 한 라인에서 사용될 때 사용되는 StringBuffer의 간단한 교체로 설계되었습니다.가능하다면, 이 종류를 우선적으로 사용하는 것을 권장합니다. 왜냐하면 대부분의 실현에서 StringBuffer보다 빠르기 때문입니다.양자의 방법은 기본적으로 같다.
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.