일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기초프로그래밍
- 백준
- 코드업100제
- SWEA파이썬
- 자바클래스
- 알고리즘
- C#변수
- 사용자입력
- 코드업100제자바
- 자바연산자
- 자바
- Java
- 변수
- 디자인패턴
- c#
- 코딩테스트
- 리터럴
- C#프로그래밍
- 프로그래머스파이썬
- 제어구조
- SWEA
- 백준파이썬
- 코드업
- 수학연산
- 개발입문
- Codeup
- Literal
- VARIABLE
- Algorithm
- 코드업자바
- Today
- Total
제니노트
문자와 문자열 [자바] 본문
char ch = 'A';
하나의 문자는 이렇게 홑따옴표를 붙여주어야 한다. 그리고 이는 character 변수 내에 저장할 수 있다.
char ch = 'AB'; //에러
이렇게 홑따옴표 내에 두 개 이상의 문자를 넣을 수 없다.
String s = "ABC" ;
두 개이상의 문자는 이렇게 큰따옴표로 묶어주어야 한다. 이처럼 여러문자가 이어져 있는 것을 문자열 혹은 문자열 리터럴 이라고 한다.
문자열을 저장할려면 자료형이 String 이여야 한다.
String s1 = "AB";
String s2 = new String("AB");
String은 원래 자바에서 제공하는 클래스이다. 문자열을 다룰때 사용한다.
원래 클래스는 2번째 문장처럼 new 연산자를 써서 객체를 생성해야 하는데,
문자열은 워낙 많이 쓰이기 때문에 String 클래스만 이렇게 특별히 기본형 변수에 값을 저장하는 표현을 허용한다.
원래 참조변수 s1에는 AB의 저장주소가 저장되는데 단순히 변수 s1에 AB가 저장된다고 봐도 무방하다.
어쨌든, 두 문장의 의미는 거의 같고 대부분 위의 문장을 사용한다. 아래문장은 거의 안쓴다
String s = "A";
String s = ""; //빈 문자열
char ch = ''; //에러
원래 문자열은 연속된 여러 글자를 의미하는 것 이지만 문자가 하나이거나, 문자가 하나도 없어도 된다. 큰따옴표 안에 아무것도 없는 문자열을 빈 문자열(Empty String)이라고 한다. 반면 홑따옴표 안에는 아무 글자도 넣지 않으면 에러가 발생한다.
String s1 = "A"+"B"; //"AB"
문자열과 문자열을 더하는 것 같지만, 이것은 문자열을 하나로 결합하라는 것이다. 따라서 S1에는 AB가 저장된다.
""+7 ---> ""+"7" --->"7"
문자열과 문자열 뿐만 아니라 문자열과 숫자도 더할 수 있다.
위처럼 더하면 7이 문자열로 바뀌어 문자열 7이 된다. 실은, 문자열은 문자열하고만 결합할 수 있기 때문에 7을 문자열로 바꿔주고 결합하는 것.
프로그래밍을 하다보면 문자열과 기본형을 바꾸어야 하는 경우가 많은데 위의 경우가 숫자를 문자열로 바꾸는 방법이다.
여기서 주의해야할 점은 순서가 왼쪽에서 부터 진행되므로 순서에 따라 값이 완전히 달라질 수도 있다는 것이다.
""+7+7 --->"7"+7 ---> "7"+"7" ---> "77"
왼쪽의 결합인 ""+7이 먼저되어 "7"이 되고 뒤의 7도 문자열 "7"이 되어 이를 결합한 "77"이 되는 것이다.
7+7+"" ---> 14+"" ---> "14"+"" + "14"
그런데 이 식에서는 왼쪽부터 수행한 7+7(14) , 14에서 빈 문자열을 더하므로 위의 식과 전혀 다른 결과를 얻는다.
결론적으로 아래와 같이 정리할 수 있다.
문자열 + any type ---> 문자열
any type + 문자열 ---> 문자열
아래 코드를 보자
char 형 변수 ch에 A 를 넣고 integer 변수 i 에도 A를 넣어보았다.
ch 변수에는 A, Integer 변수에 A를 저장했더니 이에 상응하는 아스키 값 65가 저장된 것을 볼 수 있다.
그럼 다음을 보자.
홑따옴표 즉, character 자료형 내에는 하나만 들어가야 한다. 위처럼 두 개 이상이 되면 에러가 발생한다.
이렇게 아무 글자도 안 들어가도 에러가 난다. (유효하지 않다는 에러가 뜬다.)
String 을 보자.
위와 같이 쌍따옴표 내에 아무 글자가 들어가지 않아도 괜찮고 두 개 이상의 문자가 들어가도 에러가 뜨지 않는다.
그리고 문자열간 결합도 덧셈기호로 가능하다. str2의 ABCD와 str3의 123을 결합해 str4에 저장해보았다.
그리고 이를 출력한 결과는 아래와 같다.
숫자의 문자열 형변환도 보자.
위의 설명한 것과 같은 결과가 나왔다.
출처 : 자바의 정석 3판 강의 https://youtu.be/_fz8XCW3NJg
'Java > Java 입문' 카테고리의 다른 글
printf()에 대하여 [자바] (0) | 2023.02.26 |
---|---|
classpath 설정하기 [자바] (0) | 2023.02.23 |
변수와 리터럴의 타입 불일치 [자바] (0) | 2023.02.10 |
리터럴의 접두사와 접미사 [자바] (0) | 2023.02.10 |
변수,상수,리터럴 [자바] (0) | 2023.02.08 |