홈>
내 지식에 따라
변경 가능한 문자열을 변경할 수 있으며 변경할 수없는 문자열은 변경할 수 없습니다.
여기서 String의 값을 다음과 같이 변경하고 싶습니다
String str="Good";
str=str+" Morning";
다른 방법은
StringBuffer str= new StringBuffer("Good");
str.append(" Morning");
두 경우 모두
str
의 값을 변경하려고합니다.
. 누구든지 두 경우의 차이점을 말해 줄 수 있고 변경 가능하고 변경 불가능한 객체에 대한 명확한 그림을 제공합니다.- 답변 # 1
- 답변 # 2
String
불변은 존재하지만, 변하지는 않습니다.
- 답변 # 3
자바에서는 모든 문자열이 변하지 않습니다.
What is difference between mutable and immutable String in java
String
를 사용할 때 실제로 새 컨텐츠를 작성하는 대신 컨텐츠를 수정하고 있습니다. - 답변 # 4
Java
StringBuilder
불변입니다.첫 번째 예에서는참조를
반대로,String
로 변경합니다. 따라서 다른 두String
의 값을 할당 결합 :Strings
.str + " Morning"
또는StringBuilder
방법을 통해 수정할 수 있습니다. - 답변 # 5
StringBuffer
라고 말할 때 의 의미에주의해야합니다.변수
str
?또는
당신의str
가 참조한개체를 의미합니까? ?str
에서 예를 들어StringBuffer
의 값을 변경하지 않습니다 , 그리고 당신의str
에서 예를 들어, 당신은String
의 상태를 변경하지 않습니다 개체.차이를 경험하는 가장 유쾌한 방법은 다음과 같습니다.
String
static void change(String in) { in = in + " changed"; } static void change(StringBuffer in) { in.append(" changed"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("value"); String str = "value"; change(sb); change(str); System.out.println("StringBuffer: "+sb); System.out.println("String: "+str); }
관련 자료
- c++ - const string&s와 string&s의 차이점은 무엇입니까?
- c# - automapperextensionsmicrosoftdependencyinjection과 automapper nuget 패키지의 차이점은 무엇입니까?
- sql server - 두 날짜 시간의 차이를 분 단위로 추정하는 방법
- c++ - C ++ 17과 C ++ 11에서 유형이 아닌 템플릿 매개 변수의 차이점은 무엇입니까?
- rust - 여러 가변 및 불변 차용에 대한 모범 사례는 무엇입니까?
- python - 목록과 문자 메모리 할당의 차이점
- is_a의 성능 차이?/종류? 루비에서 클래스 비교를위한 클래스 이름 대
- printing - 감열 식 프린터와 도트 매트릭스의 차이점 인쇄
- web development - 서버와 웹 서버의 실질적인 차이점은 무엇입니까?
- javascript - React 컴포넌트에서 key와 id의 차이점은 무엇입니까?
- python - sklearn 로지스틱 회귀와 Seaborn 로지스틱 회귀의 차이점은 무엇입니까?
- php - mysqli - : connect와 new mysqli의 차이점은 무엇입니까?
- c# - 16 비트, 32 비트, 64 비트 및 128 비트 부동 소수점 값의 차이점은 무엇입니까?
- excel - 조건과 시간의 차이를 찾는 공식
- javascript - reactfunctioncomponent와 app = () : reactfunctioncomponent의 차이점은 무엇입니까?
- qt - QML에서 Window와 ApplicationWindow의 차이점은 무엇입니까?
- 루비에서"렌더링"과"리디렉션", 그리고 link_to와 link_to_remote의 차이점
- python - 행 간의 차이를 얻는 방법
- Excel의 임의 열에서 두 날짜의 차이를 얻는 방법
- c# - IEnumerable 의 때때로 요소가 변경 가능하고 때로는 변경 불가능한 이유는 무엇입니까?
관련 질문
- java : String.valueOf() 대 Object.toString()
- java : StringBuilder.append()는 인수를 위해 메모리에 새로운 String 객체를 생성합니까?
- Java를 사용하여 String에서 문자의 발생을 찾는 방법은 무엇입니까?
- java : 변경할 수 없는 목록을 변경 가능한 목록으로 변환하는 방법이 있습니까?
- Java String.indexOf 및 빈 문자열
- java.lang.ArrayIndexOutOfBoundsException: 길이 1의 범위를 벗어난 인덱스 1 오류가 수신되고 있으며 이유를 확인할 수 없습니다.
- java : "메서드 settingName(String)이 StudentName 유형에 대해 정의되지 않았습니다" 오류가 발생하는 이유는 무엇입니까?
- Java가 참조로 전달되는 경우. 왜 이렇게 반환된 객체를 수정할 수 없습니까?
- java : printDialog() 없이 어떻게 인쇄()합니까?
- java : Android -자바 -단어 수
사례 1 :
위 코드에서 3 개의String
를 만듭니다. 개체. <올>"양호"문자열 풀에 들어갑니다.
"아침"문자열 풀에도 들어갑니다.
"Good Morning"과 "Good"을 연결하여 생성되었습니다. 이 남자는힙을갑니다.
참고 :문자열은항상 변경할 수 없습니다.변경 가능한 문자열과 같은 것은 없습니다. 와이즈 비즈 "좋은 아침"을 가리키는reference입니다. 당신은 실제로
<시간> 사례 2 :str
에서 일하는아니강해>입니다 목적. 당신은1
별개의3
개체.StringBuffer str = new StringBuffer("Good"); str.append(" Morning");
문자 배열을 포함합니다. 그것은StringBuffer
와아니다입니다 . 위 코드는 기존 배열에 문자를 추가합니다. 효과적으로,String
변경 가능,StringBuffer
표현이 아니다.