일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HTML #CSS
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 잔
- 컴퓨터공학 #c #c언어 #문자열입력
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- Today
- Total
영벨롭 개발 일지
[Java]자바의 데이터 타입 - String 타입 & 자주 사용하는 메소드 본문
★ String 타입
문자열 String 타입은 클래스 타입으로 자바의 참조형 Reference Type 에 해당합니다.
때문에 String 형으로 선언된 변수 자체는 스택 영역에 저장되고 할당된 String 객체는 힙 영역에 생성되어 변수에 저장되어 있는 값은 String 객체의 값이 아닌 String 객체가 저장되어 있는 힙 메모리 영역의 주소를 갖게 됩니다.
String str = "안녕하세요!";
★ String 타입 선언
String 타입을 선언하는 방법은 문자열 리터럴과 객체 생성자인 new 연산자를 이용하는 방법이 있습니다.
String str1 = "Hello World"; // 문자열 리터럴
String str2 = new String("Hello World"); // 객체 생성자
- 문자열 리터럴
문자열 리터럴로 문자열 생성 시, 힙 영역에 동일한 문자열 리터럴이 존재한다면 자바는 새로운 문자열 객체를 생성하지 않고 해당 문자열 객체를 공유하게 해줍니다.
다음 예시 코드는 두 문자열 변수 str1, str2 이 동일한 "안녕하세요!" 문자열 리터럴을 갖기 때문에 두 변수는 동일한 힙 영역 주소를 참조하게 됩니다.
String str1 = "안녕하세요!";
String str2 = "안녕하세요!";
System.out.println(str1 == str2); // true
- new 연산자
new 연산자로 생성한 문자열 객체는 문자열 리터럴과 달리 무조건 힙 영역에 새로운 객체를 생성하게 됩니다.
String str1 = new String("안녕하세요!");
String str2 = new String("안녕하세요!");
System.out.println(str1 == str2); // false
★ 문자열 비교: equals 메소드
위에서 보인 == 연산자는 두 문자열 객체가 같은 문자열을 갖는지 비교하는 것이 아닌 그것이 가리키는 메모리 주소를 보고 비교하게 됩니다.
때문에 두 문자열 객체가 가지는 문자열 값을 비교하기 위해서는 equals 메소드를 사용해야 합니다.
boolean result = str1.equals(str2);
다음은 예시 코드입니다.
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true
★ 문자열 검색: indexOf 메소드
indexOf 메소드는 문자열 내에서 주어진 매개변수로 주어진 문자열의 위치를 반환합니다.
문자열 내의 동일한 문자열이 2개 이상 존재한다면 가장 앞의 위치를 반환하고, 동일한 문자열이 존재하지 않는다면 -1을 반환합니다.
int index = str1.indexOf(str2);
다음은 예시 코드입니다.
String temp = "Hello World";
int index1 = temp.indexOf("W");
int index2 = temp.indexOf("o");
int index3 = temp.indexOf("z");
System.out.println(index1); // 6
System.out.println(index2); // 4
System.out.println(index3); // -1
★ 문자열 앞뒤 공백 제거: trim 메소드
trim 메소드는 문자열의 앞, 뒤 공백을 제거해주는 메소드입니다.
String str1 = str2.trim();
다음은 예시 코드입니다.
String tmp1 = " Hello ";
tmp1 = tmp1.trim(); // Hello
★ 문자열 대체: replace 메소드
replace 메소드는 첫 번째 인수로 target 문자열을, 두 번째 인수로 replacement 문자열을 입력 받아 해당 문자열 내의 target 과 일치하는 문자열을 replacement 문자열로 대치시키는 메소드입니다.
String str1 = str2.replace(target, replacement);
다음은 예시 코드입니다.
String temp = "abcaabbcc";
String temp2 = temp.replace("a", "x");
System.out.println(temp2); // xbcxxbbcc
★ 문자열 슬라이스: substring 메소드
substring 메소드는 인덱스를 기준으로 문자열을 슬라이스하는 메소드입니다.
메소드 오버라이딩이 되어있는 메소드로 첫 번째 인수만 전달하게 되면 첫 번째 인수 ~ 마지막 인덱스까지 슬라이스 하게 되고,
첫 번째 인수와 두 번째 인수 모두 전달하게 되면 첫 번째 인수 ~ 두 번째 인수-1 까지의 문자열을 슬라이스 하게 됩니다.
String str1 = temp.substring(startIndex);
String str2 = temp.substring(startIndex, endIndex);
다음은 예시 코드입니다.
String temp = "Hello World";
String t1 = temp.substring(3); // 3 ~ 마지막
String t2 = temp.substring(2, 6); // 3 ~ 5
System.out.println(t1); // lo World
System.out.println(t2); // llo
★ 문자열 대소문자 변환: toUpperCase 메소드 & toLowerCase 메소드
toUpperCase, toLowerCase 메소드를 사용하여 문자열 내의 모든 문자를 대문자 또는 소문자로 변환할 수 있습니다.
String upper = str.toUpperCase(); // 대문자로 변환
String lower = str.toLowerCase(); // 소문자로 변환
다음은 예시 코드입니다.
String temp = "aBcD";
String upper = temp.toUpperCase();
String lower = temp.toLowerCase();
System.out.println(upper); // ABCD
System.out.println(lower); // abcd
'Programming Language > Java' 카테고리의 다른 글
[Java] 자바 ArrayList 정리 (0) | 2023.07.21 |
---|---|
[Java] 배열 Array 정리 (0) | 2023.07.21 |
[Java]자바의 데이터 타입 - Primitive Type & Type Casting (0) | 2023.07.21 |
[Java]JVM, JRE, JDK 개념 (0) | 2023.07.21 |
[Java]클래스(class)와 객체(object) 그리고 인스턴스(instance) (0) | 2022.02.16 |