English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 예제를 통해 Java String을 배우고, 어떻게 생성하며 어떤 메서드를 사용하는지 배웁니다.
Java에서 문자열은 문자열입니다. 예를 들어, "hello"는 문자 시퀀스 "h", "e", "l", "l", "o"를 포함하는 문자열입니다.
다른 프로그래밍 언어와 달리 Java의 문자열은 기본 타입(예: int, char 등)이 아닙니다. 대신 모든 문자열은 예약된 String 이름의 클래스의 객체입니다. 예를 들어,
//문자열을 생성 String type = "java programming";
여기서는 type라는 문자열을 생성했습니다. 여기서는 "java programming"를 문자열로 초기화했습니다. Java에서는쌍따옴표문자열을 나타냅니다.
이 문자열은 String 클래스의 인스턴스입니다.
주의:모든 문자열 변수는 String 클래스의 인스턴스입니다.
Java String은 다양한 문자열 연산을 수행할 수 있는 메서드를 제공합니다. 다음은 일부 일반적인 문자열 메서드입니다.
메서드 | 설명 |
---|---|
concat() | 두 문자열을 연결 |
equals() | 두 문자열의 값을 비교 |
charAt() | 지정된 위치에 있는 문자를 반환 |
getBytes() | 문자열을 바이트 배열로 변환 |
indexOf() | 문자열에서 지정된 문자의 위치를 반환 |
length() | 지정된 문자열의 크기를 반환 |
replace() | 지정된 고유 문자를 지정된 새 문자로 대체 |
substring() | 문자열의 서브 문자열을 반환 |
split() | 문자열을 문자열 배열로 분할 |
toLowerCase() | 문자열을 소문자로 변환합니다 |
toUpperCase() | 문자열을 대문자로 변환합니다 |
valueOf() | 지정된 데이터의 문자열 표현형을 반환 |
몇 가지 예제를 들어보겠습니다.
class Main { public static void main(String[] args) { //문자열 생성 String greet = "Hello! World"; System.out.println("문자열은: "); + greet); //string length checks System.out.println("문자열의 길이: " ); + greet.length()); } }
출력 결과
문자열은: Hello! World 문자열의 길이: 12
위의 예제에서는 greet이라는 이름의 문자열을 생성했습니다. 여기서는 length() 메서드를 사용하여 문자열의 크기를 가져옵니다.
class Main { public static void main(String[] args) { //문자열 생성 String greet = "Hello! ") System.out.println("첫 번째 문자열: ") + greet); String name = "World"; System.out.println("두 번째 문자열: ") + name); //두 문자열을 연결합니다 String joinedString = greet.concat(name); System.out.println("연결된 문자열: ") + joinedString); } }
출력 결과
첫 번째 문자열: Hello! 두 번째 문자열: World 연결된 문자열: Hello! World
위의 예제에서는2greet과 name라는 문자열을 생성했습니다.
여기서는 concat() 메서드를 사용하여 문자열을 연결했습니다. 따라서 joinedString라는 새로운 문자열을 얻습니다.
Java에서는 또한 + 연산자를 사용하여 두 문자열을 연결합니다.
class Main { public static void main(String[] args) { //문자열 생성 String greet = "Hello! ") System.out.println("첫 번째 문자열: ") + greet); String name = "World"; System.out.println("두 번째 문자열: ") + name); //두 문자열을 연결합니다 String joinedString = greet + name; System.out.println("연결된 문자열: ") + joinedString); } }
출력 결과
첫 번째 문자열: Hello! 두 번째 문자열: World 연결된 문자열: Hello! World
여기서는+연산자를 사용하여 두 문자열을 연결합니다.
class Main { public static void main(String[] args) { //문자열 s를 생성합니다 String first = "java programming"; String second = "java programming"; String third = "python programming"; //첫 번째 문자열과 두 번째 문자열을 비교합니다 boolean result1 = first.equals(second); System.out.println("첫 번째와 두 번째 문자열은 같습니다: ") + result1); //첫 번째와 세 번째 문자열을 비교합니다 boolean result2 = first.equals(third); System.out.println("첫 번째와 세 번째 문자열은 같습니다: ") + result2); } }
출력 결과
첫 번째와 두 번째 문자열은 같습니다: true 첫 번째와 세 번째 문자열은 같지 않습니다: false
위의 예제에서는 equals() 메서드를 사용하여 두 문자열의 값을 비교했습니다.
두 문자열이 같으면该方法가 true를 반환하고, 다를 때는 false를 반환합니다.
주의== 연산자와 compareTo() 메서드를 사용하여 비교할 수 있습니다.2개의 문자열입니다。
class Main { public static void main(String[] args) { //문자열iteral을 사용하여 문자열을 생성합니다 String greet = "Hello! World"; System.out.println("문자열은: "); + greet); //위치를 반환3위치의 문자 System.out.println("위치3위치의 문자: " + greet.charAt(3)); //위치를 반환7위치의 문자 System.out.println("위치7위치의 문자: " + greet.charAt(7)); } }
출력 결과
문자열은: Hello! World 위치3위치의 문자: l 위치7위치의 문자: W
위의 예제에서는 charAt() 메서드를 사용하여 지정된 위치에서 문자를 접근했습니다
class Main { public static void main(String[] args) { //new 키워드를 사용하여 문자열을 생성합니다 String example = new String("Hello! World"); //자식 문자열 'World'를 반환합니다 System.out.println("subString(): "); + example.substring(7)); //문자열을 소문자로 변환합니다 System.out.println("toLowerCase(): "); + example.toLowerCase()); //문자열을 대문자로 변환합니다 System.out.println("toUpperCase(): "); + example.toUpperCase()); //특수 문자 '!'을 'o'로 변경합니다 System.out.println("replace(): "); + example.replace('!', 'o')); } }
출력 결과
subString(): World 사용 toLowerCase(): hello! world 사용 toUpperCase(): HELLO! WORLD 사용 replace(): Helloo World 사용
위의 예제에서는 new 키워드를 사용하여 'example' 이름의 문자열을 생성했습니다
이곳에서
substring() 메서드는 문자열 'World'를 반환합니다
toLowerCase() 메서드는 문자열을 소문자로 변환합니다
toUpperCase() 메서드는 문자열을 대문자로 변환합니다
replace() 메서드를 사용하여 문자 '!'을 'o'로 대체합니다。
Java의 문자열은쌍따옴표를 나타냅니다. 예를 들어,
//문자열 생성 String example = "This is a string";
이제 우리가 문자열에 포함시키고 싶다면쌍따옴표예를 들어,
//문자열이 쌍따옴표를 포함하고 있기 때문입니다 String example = "This is the "String" class";
이는 오류를 일으킵니다. 이는쌍따옴표문자열을 나타냅니다. 따라서 컴파일러는 "This is the "를 문자열로 간주합니다.
이 문제를 해결하기 위해 Java에서 escape 문자(\)를 사용합니다. 이제 문자열에 포함할 수 있습니다쌍따옴표아래와 같이 사용됩니다:
//escape 문자 사용 String example = "This is the \"String\" class.";
escape 문자는 컴파일러에게 escape를 시사합니다쌍따옴표전체 텍스트를 읽습니다.
Java에서 문자열은 string 클래스의 객체를 의미합니다.Java에서 문자열을 생성하면 변경할 수 없습니다.그래서 Java에서 문자열을 이렇게 불릅니다.불변성이유.
이를 더 깊이 이해하기 위해 예제를 보겠습니다:
//문자열 생성 String example = "Hello!";
여기서는 "Hello!" 문자열 객체를 생성합니다. 생성된 후에는 변경할 수 없습니다.
이제 문자열을 변경하려고 생각해 보겠습니다.
//그 문자열에 또 다른 문자열을 추가합니다 example = example.concat(" World");
여기서는 이전 문자열에 새로운 문자열을 추가하려고 시도합니다.
문자열은불변성그래서 오류가 발생할 것입니다. 그러나 이렇게 되어는 좋습니다.
지금은 문자열을 변경할 수 있다고 보이지만, 그렇지 않습니다. 이곳에서 실제로 무엇이 일어나는지 확인해 보겠습니다.
우리는 "Hello!" 문자열을 가리키는 이름이 example인 변수를 가지고 있습니다. 이제 위의 코드를 실행하면,
JVM는 "Hello!" 문자열을 받아들입니다
그에 따라 "World" 문자열을 추가합니다
이는 새로운 문자열 "Hello! World"을 생성합니다
변수 example는 새로운 문자열을 가리킵니다
이전 문자열 "Hello!"은 변경되지 않습니다
주의:변수를 통해 새로운 문자열을 생성하고 참조할 때마다.
현재까지 우리는 Java에서 기본 타입과 유사한 문자열을 생성했습니다. 그러나 Java의 문자열은 객체이므로 new 키워드를 사용하여 생성할 수도 있습니다. 예를 들어,
//new 키워드를 사용하여 문자열을 생성하는 방법 String name = new String("java string");
위의 예제에서는 new 키워드와 String() 생성자를 사용하여 문자열을 생성했습니다.
String 클래스는 다양한 생성자를 제공하여 다른 방식으로 문자열을 생성할 수 있습니다.
지금까지 문자열을 생성하는 과정과 이전 과정과의 차이점을 살펴보겠습니다.
이제 문자열 리터럴과 new 키워드를 사용하여 문자열을 생성하는 방법을 알게 되었으므로, 그들 간의 주요 차이점은 무엇인지 살펴보겠습니다.
Java에서 JVM은 모든 문자열을 메모리에 저장하기 위해 문자열 풀을 유지합니다. 문자열 풀은 문자열을 재사용하는 데 도움이 됩니다.
문자열 리터럴로 문자열을 생성할 때, 문자열의 값을 직접 제공합니다. 따라서, 컴파일러는 먼저 문자열 풀을 확인하여 문자열이 이미 존재하는지 확인합니다.
문자열이 이미 존재하는 경우그렇지 않으면 새 문자열을 생성하지 않습니다. 대신, 새 참조는 존재하는 문자열을 가리킵니다.
문자열이 존재하지 않는 경우그렇다면 새 문자열을 생성합니다.
하지만, new 키워드를 사용하여 문자열을 생성할 때, 문자열의 값을 직접 제공하지 않습니다. 따라서, 새 문자열은 항상 생성됩니다.