JAVA/[JAVA] 기초 문법

[자료형] 문자와 문자열

DoMyBestForDeveloper 2026. 1. 8. 19:13

문자

문자 자료형 = char

char 자료형은 사실 프로그램을 작성할 때 그렇게 많이 사용하지 않음. 문자열을 다룰 때는 주로 String을 사용하기 때문임. 하지만 문자값을 표현하는 방식은 다양하므로 char를 사용할 때는 주의해야 함

 

char a1 = 'a';  // 문자로 표현
char a2 = 97;  // 아스키코드로 표현
char a3 = '\u0061';  // 유니코드로 표현

System.out.println(a1);  // a 출력
System.out.println(a2);  // a 출력
System.out.println(a3);  // a 출력

 

세 종류의 코드는 a라는 문자를 똑같이 출력함. 즉, a라는 문자갑을 'a', 97, '\u0061'로 사용해도 모두 같은 결과를 나타냄. 첫 번째 코드는 문자로, 두 번째 코드는 아스키코드로, 세 번째 코드는 유니코드로 표현한 것임

 

 

문자열

문자열을 나타내는 자료형 = String

String a = "Happy Java";  // 문자열의 앞과 뒤는 쌍따옴표("")로 감싸야 한다.
String b = "a";
String c = "123";

 

 

다음과 같이 표현도 가능

String a = new String("Happy Java");
String b = new String("a");
String c = new String("123");

 

이때 new 키워드는 객체를 만들 때 사용함. 문자열을 표현할 때는 가급적 첫 번째 방식인 리터럴(literal) 표기 방식을 사용하는 것이 좋음 -> 가독성이 좋고 컴파일할 때 최적화에 도움이 됨

 

리터럴 표기 방식 이해하기

String a="Happy Java"와 String b=new String ("Happy Java")에서 a,b는 같은 문자열을 값게 되지만, 완전히 동일하지 않음. 첫 번째 코드는 리터럴(literal) 표기 방식이라고 하는데, 고정된 값을 그대로 대입하는 방법을 말함. 이와 달리 두 번째 방식은 항상 새로운 String 객체를 만듦

첫 번째 방식은 동일한 리터럴을 사용할 경우, 새로운 String 객체를 만들지 않고 기존에 만든 것을 재활용함

 

 

문자열 내장 메서드

1. equals

문자열이 2개가 같은지를 비교해 결괏값을 반환

String a = "hello";
String b = "java";
String c = "hello";
System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력
false
true

문자열 a와 문자열 b에는 hello와 java가 각각 저장되어 있으므로 값이 서로 같지 않음. 따라서 equals 메서드를 호출하면 false를 반환함. 그러나 문자열 a와 문자열 c는 hello와 hello로 같은 값을 가지므로 true를 반환함

 

이처럼 문자열의 값을 비교할 때는 반드시 equals를 사용해야 함. 만약 equals 대신 ==연산자를 사용한다면 다음과 같은 결과가 발생함

String a = "hello";
String b = new String("hello");
System.out.println(a.equals(b));  // true
System.out.println(a == b);  // false
true
false

문자열 a와 b는 hello로 값이 동일하지만, equals를 호출하면 true, ==연산자를 호출하면 false를 반환함. a와 b의 값은 같지만, 서로 다른 객체이기 때문에 이런 결과가 나오는 것

==는 2개의 자료형이 같은 객체인지를 판별할 때 사용하는 연산자이므로 false를 반환함

 

 

 

 

2. indexOf

indexOf는 문자열에서 특정 문자열이 시작되는 위치(index 값)를 반환. 문자열 a에서 java가 시작되는 위치를 알고싶다면, indexOf를 사용해 다음처럼 위치를 반환받을 수 있음

String a = "Hello Java";
System.out.println(a.indexOf("Java"));  // 6 출력
6

문자열 Hello Java에서 특정 문자열인 Java는 일곱 번째 문자인 J부터 시작됨. 이때 결과값이 7이 아닌 6으로 나온 이유는 숫자를 0에서부터 세기 때문

 

 

 

3. contains

문자열에서 특정 문자열이 포함되어 있는지의 여부를 반환

String a = "Hello Java";
System.out.println(a.contains("Java"));  // true 출력

문자열 a는 Java라는 문자열을 포함하고 있어서 true를 반환함

 

 

 

4. charAt

문자열에서 특정 위치의 문자를 반환. Hello Java 문자열에서 J는 여섯 번째 인덱스에 위치한 문자임. 인덱스 6으로 문자 J를 반환받으려면  charAt을 사용

String a = "Hello Java";
System.out.println(a.charAt(6));  // "J" 출력

 

 

 

5. replaceAll

문자열에서 메서드는 문자열에서 특정 문자열을 뽑아낼 때 사용함

String a = "Hello Java";
System.out.println(a.substring(0, 4));  // Hell 출력

위처럼 substring(시작 위치, 끝 위치)와 같이 코드를 작성하면 문자열의 시작 위치에서 끝 위치까지의 문자를 뽑아내게 됨. 단, 끝 위치의 문자는 포함이 안된다는 점에 주의해야 함.

 

 

6. toUpperCase

문자열을 모두 대문자로 변경할 때 사용함

String a = "Hello Java";
System.out.println(a.toUpperCase());  // HELLO JAVA 출력

 

반대로, 문자열을 모두 소문자로 변경할 때는 toLowerCase를 사용함

 

 

7. split

split 메서드는 문자열을 특정한 구분자로 나누어 문자열 배열로 반환함

String a = "a:b:c:d";
String[] result = a.split(":");  // result는 {"a", "b", "c", "d"}

이번 예처럼 a:b:c:d라는 문자열을 콜론으로 나눠 {"a", "b", "c", "d"} 문자열 배열을 만들 수 있음

 

문자열 포매팅

1. 숫자 바로 대입하기

문자열 포매팅은 String.format 메서드를 사용함

System.out.println(String.format("I eat %d apples.", 3));  // "I eat 3 apples." 출력

이 코드는 문자열 안에 정수 3을 삽입하는 방법을 보여줌.

문자열 안에서 숫자를 넣고 싶은 자리에 %d를 입력하고, 삽입할 숫자 3을 두 번째 파라미터로 전달함. 

 

2. 문자열 바로 대입하기

문자열 안에 꼭 숫자만 넣어라는 것은 아님. 숫자 대신 문자열도 넣을 수 있음

System.out.println(String.format("I eat %s apples.", "five"));  // "I eat five apples." 출력

이 예제에서는 문자열 안에 또 다른 문자열을 삽입하기 위해 앞에서 사용한 문자열 포멧 코드 %d가 아니라 %s를 씀.

숫자를 넣기 위해서는 %d를, 문자열을 넣으려면 %s를 써야함

 

 

문자열 포맷 코드

코드 설명
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동소수(floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 % 그 자체)

 

 

'JAVA > [JAVA] 기초 문법' 카테고리의 다른 글

[자료형] 상수 집합  (0) 2026.01.11
[자료형] 맵과 집합  (1) 2026.01.11
[자료형] 배열과 리스트  (1) 2026.01.11
[자료형] 숫자  (0) 2026.01.07
[JAVA] 키보드로 입력 받는 방법  (0) 2026.01.06