반응형

문자와 문자열

char ch = 'A';

char 변수타입에 홑따옴표를 이용하여 하나의 문자를 저장할 수 있다.

char ch = 'AB';		// 에러

이렇게 홑따옴표 안에 두개 이상의 문자를 넣으면 에러가 발생한다.

String s = "ABC";

둘 이상의 문자는 위와 같이 큰따옴표로 묶어주어야 한다. 
String s = "ABC"; 와 같이 문자가 연속적으로 이어져 있는 것을 "문자열" 또는 "문자열 리터럴" 이라고 하고, 문자열을 저장하려면 변수의 타입이 String이어야 한다.

String s1 = "AB";
String s2 = new String("AB");

String은 원래 Java에서 제공하는 클래스이며 문자열을 다룰 때 사용한다. 
원래 클래스는 예시의 두번째 줄과 같이, 'new'연산자를 사용하여 객체를 생성해야하는데, 문자열은 워낙 자주 쓰이기 때문에 String 클래스만 특별하게 기본형 변수에 값을 저장하는 것과 같은 표현을 허용한다.

원래 String s1 = "AB";에서 참조변수 s1에는 문자열 "AB"의 주소가 저장되는데, 단순히 변수 s1에 문자열 "AB"가 저장된다고 생각해도 좋다. 어쩃든 위의 두 문장은 거의 같다. 대부분 위의 문장을 사용한다. 

두 문장은 아주 약간의 차이가 있다.  그 차이에 대해서는 9장에서 알아보도록 하겠다. 

 

String s = "A";

원래 문자열은 연속된 여러 문자를 의미하는 것이지만, 문자가 하나이거나 심지어는 문자가 하나도 없어도 된다. 

String s = "";		// 빈 문자열

 

큰따옴표 안에 아무런 문자가 없는 문자열을 "빈문자열"이라고 한다. 

char ch = '';		// 에러

반면에 홑따옴표 안에는 아무론 문자를 넣지 않으면 에러가 발생다.

 

String s1 = "A" + "B";		// "AB"

위의 문장은 두 문자열을 하나로 결합하라는 뜻이다.  그래서 변수 s1에는 문자열 "AB"가 저장된다.

 
문자열과 숫자도 결합 할 수 있는데,

"" + 7   →   "" + "7"   →  "7"

빈 문자열과 숫자 7을 더하면, 숫자가 문자열로 변환된 다음에 문자열과 결합해서 문자열 "7"이 된다.

이때 주의 해야 할 것은, 문자열 결합은 왼쪽에서 오른쪽으로 진행되기 때문에, 순서에 따라 전혀 다른 결과가 나올 수 있다. 

 

"" + 7 + 7  →  "7" + 7  → "7" + "7"  →  "77"

7 + 7 + ""  → 14 + "" →  "14" + "" →  "14"

결론적으로 정리해보면 아래와 같다.

  • 문자열 + any type  →  문자열
  • any type + 문자열  → 문자열

반응형

'JAVA' 카테고리의 다른 글

기본형과 참조형  (0) 2022.03.11
두 변수 바꾸기  (0) 2022.03.11
리터럴의 타입과 접미사  (0) 2022.03.10
상수와 리터럴  (0) 2022.03.09
변수의 타입  (0) 2022.03.09