Java에서는 클래스 타입인 String을 사용해서 문자열을 다룬다. 클래스는 그 자체로 타입으로 사용할 수 있고 관련 기능을 한데 묶을 수 있다.
String 타입의 선언과 저장은 다음과 같다.
1. 문자열 리터럴을 대입하는 방법 (* 리터럴 = 문자열 그 자체가 값을 나타내는것")
String 변수명;
변수명 = "이것은문자열";
2.
String 변수명 = "이것도문자열";
3. new 연산자로 새 객체를 생성후, 문자열을 대입하는 방법
String 변수명 = new String("이것또한문자열");
문자열은 앞에 배운 변수에 값을 직접 저장하는 것과는 달리 약간 다른 방식으로 작동하는데,
문자열이 담겨있는 주소를 참조 하는것이라 이해하는 것이 좋다. 즉 문자열은 Reference Type에 속한다.
그렇기 때문에 위의 3가지의 선언에서 차이가 있는데, 1번과 2번은 동일한 문자열 리터럴 (문자열 그대로의 값)로 생성된 객체를 참조하기 때문에 비교 연산자로 비교해보면 값이 같다고 나온다. 즉 객체의 주소 값이 동일하다.
반면 3번은 새로운 객체를 따로 만들어 문자열을 저장했기 때문에 1,2의 값과 비교하면 같지 않다 라는 결과가 나온다. 왜냐하면 1,2번의 객체는 동일한 주소 값을 주소 값을 가지지만 3번은 new로 새 객체를 아예 만들었기 때문에 다른 주소 값을 갖기 때문.
String class의 대표적 메서드
**외울 필요 없고 이런게 있다 수준으로 넘어가자.. 필요할 때 찾아보는 걸로 **
** 문서 최하단에 모음집 리스트와 출처를 남겨놓았다 **
1. charAt( )
해당 문자열 중 특정 인덱스에 해당하는 문자를 return 한다.
해당 문자열의 총 길이보다 큰 값이나 음수 값을 넣으면 Error가 난다.
public class main {
public static void main(String[] args)
{
String str = new String("Java");
System.out.println("문자열 : " + str); // "문자열 : Java"
System.out.println(str.charAt(0)); // 'J'
System.out.println(str.charAt(1)); // 'a'
System.out.println(str.charAt(2)); // 'v'
System.out.println(str.charAt(3)); // 'a'
System.out.println("\ncharAt() 메서드 호출 후 문자열 : " + str);
}
}
문자열 : Java
J
a
v
a
charAt() 메서드 호출 후 문자열 : Java
"Java" 문자열 배열은 총 4칸이므로, [0][1][2][3] -> [J][a][v][a]와 같이 문자열이 저장되어 있다 볼 수 있다.
**배열은 항상 0부터 시작한다**
예) str.charAt(인덱스 값)의 형식이므로 인덱스에 3을 넣으면 배열의 3번 칸이기 때문에 a가 출력
2. compareTo( )
해당 문자열을 인수로 받은 문자열과 사전 편찬 순으로 대소문자를 구분하여 비교한다.
[문자열이 같으면 0 / 인수로 받은 문자열 보다 작으면 음수 / 인수로 받은 문자열 보다 크면 양수] Return
대소문자를 구분하지 않으려면 compareToIgnoreCase( ) 메서드 이용
public class main {
public static void main(String[] args)
{
String str = new String("abcd");
System.out.println("문자열 : " + str);
System.out.println(str.compareTo("bcef")); // -1
System.out.println(str.compareTo("abcd")); // 0
System.out.println(str.compareTo("Abcd")); // 32
System.out.println(str.compareTo("cdef")); // -2
System.out.println(str.compareToIgnoreCase("Abcd")); // 0
System.out.println("compareTo() 메서드 호출 후 문자열 : " + str);
}
}
문자열 : abcd
-1
0
32
-2
0
compareTo() 메서드 호출 후 문자열 : abcd
3. concat( )
해당 문자열 뒤에 인수로 받은 문자열을 추가해서 새로운 문자열을 return 한다. 하지만 새로운 문자열은 해당 메서드에서만 나온다.
인수받은 문자열의 길이가 0이면 해당 문자열을 그대로 return 한다.
public class main {
public static void main(String[] args)
{
String str = new String("Java");
System.out.println("문자열 : " + str);
System.out.println(str.concat("수업"));
System.out.println("concat() 메서드 호출 후 문자열 : " + str);
}
}
문자열 : Java
Java수업
concat() 메서드 호출 후 문자열 : Java
4. indexOf( )
해당 문자열에서 특정한 문자나 문자열이 처음으로 등장하는 위치의 index를 return 한다.
위치에 존재하지 않을 경우 -1 return
public class main {
public static void main(String[] args)
{
String str = new String("Oracle Java");
System.out.println("문자열 : " + str);
System.out.println(str.indexOf('o')); //-1 (대소문자 구별 )
System.out.println(str.indexOf('a')); // 2
System.out.println(str.indexOf("Java"));// 7
System.out.println("indexOf() 메서드 호출 후 원본 문자열 : " + str);
}
}
문자열 : Oracle Java
-1
2
7
indexOf() 메서드 호출 후 원본 문자열 : Oracle Java
5. trim( )
해당 문자열 맨 앞과 맨 뒤에 포함된 모든 공백 문자 제거
public class main {
public static void main(String[] args)
{
String str = new String(" Java ");
System.out.println("문자열 : " + str);
System.out.println(str + '|');
System.out.println(str.trim() + '|');
System.out.println("trim() 메서드 호출 후 문자열 : " + str);
}
}
문자열 : Java
Java |
Java|
trim() 메서드 호출 후 문자열 : Java
6. toLowerCase( )와 toUpperCase( )
toLowerCase( )는 해당 문자열의 모든 문자를 소문자로, toUpperCase( )는 대문자로 변경한다.
public class main {
public static void main(String[] args)
{
String str = new String("Java");
System.out.println("문자열 : " + str);
System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
System.out.println("두 메서드 호출 후 문자열 : " + str);
}
}
문자열 : Java
java
JAVA
두 메서드 호출 후 문자열 : Java
Java String Reference
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
'programming > JAVA' 카테고리의 다른 글
Java - Type (0) | 2022.05.04 |
---|---|
Java - 변수 / 상수 / 타입변환 (0) | 2022.05.04 |
Java - [문자열] StringTokenizer (0) | 2022.05.04 |
Java - [문자열] StringBuilder / StringBuffer (0) | 2022.05.04 |
JAVA (0) | 2022.05.04 |