문자 리터럴
❓
작은 따옴표('')로 문자 하나를 감싼 것, 단 하나의 문자, Character
문자열 리터럴
❓
큰 따옴표("")로 두 문자 이상 감싼 것, 문자의 연속된 나열, String
char ch = 'J'; //char ch = 'Java'; ← 이렇게 사용 불가
String name = "Java"; //변수 name에 문자열 리터럴 "Java"저장
📍 문자열 리터럴은""
안에 아무런 문자도 넣지 않은 것을 허용하며, 이를 빈 문자열(empty string)이라고 함
📍 문자 리터럴은 반드시 ''
안에 하나의 문자가 있어야 함
String str = ""; //OK. empty string
char ch = ''; //error. ''안에 반드시 하나의 문자가 필요
char ch = ' '; //OK. 공백문자(blank)로 변수 ch를 초기화
클래스(class)
이므로, 아래와 같이 객체를 생성하는 연사자 new
를 사용해야 하지만 특별히 이와 같은 표현도 허용String name = new String("Java"); //String객체를 생성
String name = "Java"; //위의 문장을 간단히. 둘의 차이점은 9장 참고
+
는 피연산자가 모두 숫자일 때는 두 수를 더하지만, 피연산자 중 어느 한 쪽이 string
이면, 나머지 한 쪽은 먼저 String으로 변환 후, 두 String으로 결합. 즉, 어떤 타입의 변수도 문자열과 덧셈연산을 수행하면 그 결과가 문자열이 됨문자열 + any type → 문자열 + 문자열 → 문자열
any type + 문자열 → 문자열 + 문자열 → 문자열
ex
7 + " " → "7" + " " → "7 "
" " + 7 → " " + "7" → " 7"
7 + "7" → "7" + "7" → "77"
7 + 7 + "" → 14 + "" → "14" + "" → "14"
"" + 7 + 7 → "7" + 7 → "7" + "7" → "77"
숫자 7
을 문자열 "7"
로 변환 시 빈 문자열("")
을 더해주면 됨class EX2_7 {
public static void main(String[]) args) {
String name = "Ja" + "va"; //Java 출력
String str = name + 8.0; //Java8.0 출력
System.out.println("" + "") // 공백 출력
System.out.println("" + 7 + 7) // 77출력
🍕 참고
문자+문자
, 문자+숫자
의 결합시(앞뒤순서 관계없이) 아스키코드의 10진수로 변환
되어 출력(단, 문자+문자열의 결합시 문자열로 출력)int x = 10;
int y = 20;
두 변수 x와 y에 저장된 값을 바꾸려면 어떻게 해야 할까?
💡 값을 임시로 저장할 변수가 하나 더 필요
int tmp; //임시로 값을 저장하기 위한 변수(빈 컵 역할)
tmp = x; // ① x의 값을 tmp에 저장
x = y; // ② y의 값을 x에 저장
y = tmp; // ③ tmp에 저장된 값을 y에 저장
ex
class Ex2_8 {
public static void main(String args[]) {
int x = 10, y = 5; //한줄로 입력 시 마지막에 ; 입력
System.out.println("x="+x); //x=10 출력
System.out.println("y="+y); //y=5 출력
int tmp = x; //1. x의 값을 tmp에 저장
x = y; //2. y의 값을 x에 저장
y = tmp; //3. tmp에 저장된 값을 y에 저장
System.out.println("x="+x); //x=5 출력
System.out.println("y="+y); //y=10 출력