> Java > java지도 시간 > 자바의 String 클래스를 사용하는 방법

자바의 String 클래스를 사용하는 방법

WBOY
풀어 주다: 2023-04-19 13:19:03
앞으로
1847명이 탐색했습니다.

자바의 String 클래스를 사용하는 방법

1. String 이해

1. JDK의 String

먼저 JDK의 String 클래스 소스 코드를 살펴보면 String 클래스가 많이 구현되어 있음을 알 수 있습니다. 이는 String 클래스를 상속할 수 없음을 의미합니다. 이러한 방식으로 JDK를 사용하는 모든 사람은 동일한 String 클래스를 사용하게 됩니다. 모든 사람이 사용하는 문자열은 상속되지 않습니다. 동일한 버전에서는 서로 다른 두 사람이 동일한 메소드를 사용하고 다른 결과를 표시하므로 코드 개발이 불가능합니다. 상속 및 메소드 재정의는 유연성을 가져올 뿐만 아니라 많은 하위 클래스를 가져옵니다. 일관되지 않은 동작의 문제

자바의 String 클래스를 사용하는 방법

2. 문자열을 만드는 네 가지 방법

방법 1: 직접 할당(일반적으로 사용됨)

String str = " hello word "

방법 2: 생성 방법을 통해 객체 생성

String str1 = new String(" hello word ");

방법 3: 문자 배열을 통해 객체 생성

char[] data = new char[]{'a', 'b','c'};

방법 4: 통해 String 정적 메소드 valueOf(모든 데이터 유형) = > 문자열로 변환(일반적으로 사용됨)

String str2 = String.valueOf(10);

자바의 String 클래스를 사용하는 방법

3. String 리터럴

Literal: 직접 작성한 값을 리터럴이라고 합니다

10 - > int literal
10.1 --> double literal
true --> boolean literal
" abc " - > 문자열 리터럴
문자열의 리터럴은 실제로 문자열입니다.
String str = “hello word”;
String str2 = str;
이때는 문자열 리터럴이자 문자열 객체입니다. 이때 이해를 돕기 위해 임시로 저장되어 있다고 생각합니다. 그러나 실제로는 메소드 영역에 저장됩니다. 이때 str2 = "Hello"인 경우 " "로 묶인 Hello도 문자열 객체이므로 str의 출력에 영향을 미치지 않습니다. space는 이때 힙에 열려 있으며 str2는 이때 새 객체의 주소 공간을 저장합니다. 이는 str

자바의 String 클래스를 사용하는 방법
4에 영향을 미치지 않습니다. 문자열 비교는 동일합니다
자바의 String 클래스를 사용하는 방법모든 참조 데이터 유형이 비교됩니다. 동일할 경우에는 equals 메소드를 사용하여 비교합니다. JDK에서 일반적으로 사용되는 클래스는 equals 메소드를 재정의하여 직접 사용할 수 있습니다.

참조 데이터 유형은 ==를 사용하여 주소를 비교합니다.

아래 그림은 2개의 참조를 보여줍니다. 이는 문자열의 상수 풀과 관련이 있습니다


아래 그림은 두 개의 객체와 두 개의 주소 공간을 생성합니다. ==를 사용하면 false가 반환됩니다

자바의 String 클래스를 사용하는 방법 같음의 비교 크기는 대소문자를 구분합니다

자바의 String 클래스를 사용하는 방법 equalsIgnoreCase 메소드는 대소문자 구분 비교가 아닙니다

자바의 String 클래스를 사용하는 방법
2. 문자열 상수 풀
자바의 String 클래스를 사용하는 방법1. 문자열 상수 풀이란? 문자열 상수 풀은 힙에 객체가 없으면 문자열 객체로 유지됩니다. 문자열 객체를 생성하기 위해 직접 할당 방법을 사용하면 JVM이 참조 내용을 상수 풀에 이미 존재하므로 생성할 필요가 없습니다. 새로운 문자열 객체를 생성하되 기존 객체를 직접 재사용합니다. 이것이 위 그림의 세 참조가 동일한 주소를 가리키는 이유입니다

객체가 처음 생성되면 상수 풀에 아무것도 없습니다. 따라서 문자열 객체가 생성되어 상수 풀에 저장됩니다. 객체가 두 번째와 세 번째로 생성되면 JVM은 동일한 내용이 상수 풀에 이미 존재한다는 것을 발견하고 더 이상 새 객체를 생성하지 않고 직접 가리킵니다. str1


  1. 과 동일한 주소 공간

자바의 String 클래스를 사용하는 방법
이때 프로그램은 오른쪽에서 왼쪽으로 실행되는데, 코드 첫 번째 줄의 오른쪽은 문자열 상수인데, 이것도 문자열 객체이므로 먼저 상수 풀에 공백을 하나 열어두고, 그런 다음 새 문자열을 만듭니다. 개체가 저장되고 프로그램이 왼쪽으로 실행됩니다. new 키워드를 만나면 새 개체가 생성되어 힙에 저장됩니다. 그런 다음 str1이 힙의 개체를 가리킵니다. 코드의 두 번째 및 세 번째 줄에서는 상수 풀이 생성된 것으로 확인됩니다. 객체가 존재하면 더 이상 생성되지 않습니다. new 키워드를 만나면 새로운 객체가 생성됩니다. 메모리 맵은 다음과 같습니다. :
자바의 String 클래스를 사용하는 방법

2. 수동 풀링 방법

String 클래스에서 제공하는 intern 메서드, 로컬 메서드:
자바의 String 클래스를 사용하는 방법
Call 인턴 메서드는 현재 문자열 참조가 가리키는 객체를 문자열 상수 풀에 저장합니다. 두 가지 상황이 있습니다:
1. 객체가 현재 상수 풀에 이미 존재하는 경우 새 객체가 생성되지 않고 상수 풀에 반환됩니다.
2. 객체가 현재 상수 풀에 존재하지 않는 경우 풀에 객체를 추가하고 풀에 들어간 후 주소를 반환합니다.

1. 다음 코드 줄의 출력을 살펴보세요
자바의 String 클래스를 사용하는 방법
intern 메서드에는 반환 값이 있으므로 str1은 이때 intern 메서드만 호출하고 반환 값을 받지 않으므로 str1은 여전히 ​​를 가리킵니다. 힙에 있는 객체인 str2는 상수 풀에 있는 객체를 가리키므로 false를 반환합니다.
자바의 String 클래스를 사용하는 방법
인턴 메서드 호출의 반환 값을 받는 한 true를 반환합니다. str1이 가리키는 개체가 풀에 수동으로 추가되고 풀에 이미 개체가 있으므로 str1이 개체를 직접 가리키도록 합니다.
자바의 String 클래스를 사용하는 방법
2. 다음 코드 줄의 출력을 살펴보세요.
자바의 String 클래스를 사용하는 방법
pool에는 아무것도 없으므로 상수 풀로 직접 이동하세요
자바의 String 클래스를 사용하는 방법

자바의 String 클래스를 사용하는 방법 3. 문자열의 불변성


1. 왜 불변성인가요

참고: 소위 문자열의 불변성은 불변성을 의미합니다. 문자열의 참조가 변경될 수 없다는 것은 아닙니다

여기서 불변성은 "hello", "world", "helloworld", "!!!" 및 이어진 ​​를 의미합니다. "helloworld!!!" 이는 이미 생성된 문자열 개체입니다. 일단 이 개체가 선언되면 해당 내용을 수정할 수 없지만 참조는 한 순간에는 helloworld를 가리키고 이제는 변경될 수 있습니다. 안녕 세계에! ! ! , 이것이 모두 가능합니다
자바의 String 클래스를 사용하는 방법
문자열은 단지 문자 배열일 뿐입니다 -> char[], 문자열은 실제로 문자 배열에 저장됩니다. 문자열의 내용을 변경할 수 없는 이유는 무엇입니까? 문자열의 소스코드를 보고 알아봅시다.
자바의 String 클래스를 사용하는 방법
String 내부의 문자 배열이 캡슐화되어 있음을 알 수 있습니다. 이 문자 배열은 문자열의 내용을 변경하는 것은 물론이고 String 클래스 외부에서 액세스할 수도 없습니다.
String str = " hello ";자바의 String 클래스를 사용하는 방법


2 .How 문자열의 내용을 수정하려면자바의 String 클래스를 사용하는 방법

1. 런타임 시 리플렉션을 통해 값 배열의 캡슐화를 파괴합니다

2. StringBuilder 또는 StringBuffer 클래스를 교체합니다. - - 더 이상 동일한 유형이 아닙니다

a.StringBuilder: 스레드가 안전하지 않고 강력한 성능을 발휘합니다

b .StringBuffer: 스레드 안전, 성능 저하
또한 두 클래스의 사용법은 완전히 동일합니다

문자열을 자주 연결해야 하는 경우 StringBuilder 클래스의 추가 메서드를 사용하세요. 잠시 후 변경되며 곧 hello world가 됩니다


3. StringBuilder 클래스의 구체적인 사용자바의 String 클래스를 사용하는 방법

StringBuilder 클래스와 String은 문자열 연결 문제를 해결하기 위해 만들어졌습니다.

StringBuilder 클래스와 클래스의 문자열 상호 변환:

1. StringBuilder는 toString 메서드를 호출하여 String 클래스로 변환할 수 있습니다.


2. String 클래스는 StringBuilder의 생성자 또는 추가 메서드를 사용하여 StringBuilder 클래스로 변환할 수 있습니다. 자바의 String 클래스를 사용하는 방법


기타 일반적으로 사용되는 방법: 자바의 String 클래스를 사용하는 방법 a. sb에서 제공하는 문자열 반전 연산, reverse();
자바의 String 클래스를 사용하는 방법

b. 지정된 범위의 데이터를 삭제하고(int start, int end) 처음부터 끝까지 모든 내용을 삭제하고 왼쪽에서 닫고 오른쪽에서 엽니다.
자바의 String 클래스를 사용하는 방법

c. , 각 데이터 유형): 시작 인덱스 위치부터 삽입을 시작하며, 삽입 시작 인덱스는 start
자바의 String 클래스를 사용하는 방법

위 내용은 자바의 String 클래스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿