문자(Charactar)
char ch = 'A'; // 하나의 문자를 저장하는 것은 가능하다.
// char ch1 = 'AB'; // 문자 타입은 한 개 이상의 문자를 저장하는 것을 허용하지 않는다.
// char ch2 = ''; // 문자 타입은 빈 값은 저장할 수 없다.
문자 타입은 하나의 문자를 저장한다.
빈 문자를 저장할 수 없다.
하나의 문자 값은 아스키코드값을 이용하면 숫자로 변환할 수 있다.
// TODO: 1. 문자와 숫자간의 변환
// 문자를 숫자로
int num = '3' - '0';
// 숫자를 문자로
char ch = 3 + '0';
문자 '3' 과 '0'을 - 연산자를 통해서 계산한 결과 숫자 3이 나오듯이 문자 타입은 아스키코드를 통한 연산이 가능하다.
문자열(String)
String str = "A"; // 문자열 타입은 하나의 문자도 문자열로 저장할 수 있다.
String str1 = "ABC"; // 연속된 문자를 문자열로 저장한다.
String str2 = ""; // 빈 문자열도 저장이 가능하다.
문자열 타입은 연속된 여러 문자를 저장한다.
빈 문자열도 저장할 수 있다.
문자열은 같은 문자열과 결합할 수 있기 때문에 연산자를 사용하는 경우 강제로 문자열로 바꿔서 결합한다.
System.out.println("" + 7 + 7); // 왼쪽부터 결합이 진행되기 때문에 77의 결과값이 나온다.
System.out.println(7 + 7 + ""); // 왼쪽부터 결합이 진행되기 때문에 14의 결과값이 나온다.
여기서 주의할 점으로는 문자열 결합은 왼쪽부터 진행되기 때문에 예상과는 다른 결과가 나올 수 있다는 점이다.
String 메서드
String은 하나의 클래스이기 때문에 여러 가지 메서드들을 지원해 준다.
String str = "abcdefg";
String str1 = new String("ABCDEFG");
String str2 = " A a B b C c ";
위와 같이 문자열 값이 있다고 가정해 보고 여러 가지 메서드를 활용해 보자.
length
문자열의 길이를 알려주는 메서드이다. 반환 값은 int형으로 반환해 준다.
int length = str.length();
int length2 = str2.length();
System.out.println("length = " + length); // 7
System.out.println("length2 = " + length2); // 14
띄어쓰기도 같은 문자열로 인식하기 때문에 str과 str2는 서로 다른 길이를 가지게 된다.
toUpperCase / toLowerCase
소문자를 대문자로, 대문자를 소문자로 바꿔주는 메서드이다.
String upperCase = str.toUpperCase();
String lowerCase = str.toLowerCase();
System.out.println("upperCase = " + upperCase); // ABCDEFG
System.out.println("lowerCase = " + lowerCase); // abcdefg
trim
문자열에서 앞, 뒤 공백을 제거해 주는 메서드이다.
String trim = str2.trim();
System.out.println("trim = " + trim); // A a B b C c
앞, 뒤 공백을 제거해 주지만 문자 사이의 띄어쓰기는 제거해주지 않는다는 특징이 있다.
charAt
문자열에서 주어지는 인덱스 값에 해당하는 문자가 어떤 것인지 알려준다. 이때 주의할 점은 반환 값이 char 타입이라는 것이다.
char c = str.charAt(2);
System.out.println("c = " + c); // c
IndexOf / lastIndexOf
주어지는 문자열이 몇 번째 위치하는지 알려주는 메서드이다.
int IndexOf = str.indexOf("e");
int lastIndexOf = str.lastIndexOf("b");
System.out.println("IndexOf = " + IndexOf); // 4
System.out.println("lastIndexOf = " + lastIndexOf); // 1
lastIndexOf 메서드는 주어진 문자열이 배열에서 마지막으로 어디 위치해 있는지 알려주는 메서드이다. 지금은 b를 찾는데 1이 나오지만 만약에 str 변수 마지막에 b를 추가하게 된다면 값은 7이 나오게 된다.
equals / equalsIgnoreCase
문자열을 비교해 주는 메서드이다.
boolean equals = str.equals(str1);
boolean equalsIgnoreCase = str.equalsIgnoreCase(str1);
System.out.println(str == str1); // false
System.out.println("equals = " + equals); // false
System.out.println("equalsIgnoreCase = " + equalsIgnoreCase); // true
문자열을 생성하면 하나의 객체이기 때문에 비교 연산자를 통한 직접 비교는 불가능하다. (주소를 비교하게 됨)
따라서 equals 메서드를 통해서 객체에 저장된 값을 비교해야 된다. 여기서 IgnoreCase가 추가된다면 대소문자 구분 없이 비교하게 돼서 true 값이 나오게 된다.
startWith / endWith
주어진 문자열로 시작 혹은 끝나는지 알려주는 메서드이다. 반환값은 boolean이다.
boolean startsWith = str.startsWith("a");
boolean endsWith = str.endsWith("e");
System.out.println("startsWith = " + startsWith); // true
System.out.println("endsWith = " + endsWith); // false
charArray
문자열을 char 타입의 배열로 변환해 주는 메서드이다.
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
System.out.println(i);
}
결과: a
b
c
d
e
f
g
'자바' 카테고리의 다른 글
Java - 열거형 (0) | 2023.11.09 |
---|---|
Java - 배열 (1) | 2023.11.09 |
Java - 제어문 (0) | 2023.11.04 |
Java - 연산자 (0) | 2023.11.02 |
Java - 변수 (1) | 2023.11.01 |