일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- auto-encoder
- 자바
- java
- 계단 오르기
- 선적분
- BST
- 딕셔너리
- 코드업
- 벡터 해석
- 2P1L
- 신경망
- Asteroid RL
- Class
- 백트래킹
- 최단 경로
- 피보나치 수열
- 미분 방정식
- 강화학습
- Python
- 소행성
- dictionary
- cURL
- 델
- 이진탐색트리
- 함수
- 딥러닝
- 벡터해석
- 파이썬
- 회로이론
- 자료형
- Today
- Total
Zeta Oph's Study
[Java - 기초 문법] 03. 문자열(String) 본문
https://crane206265.tistory.com/57
[Java - 기초 문법] 02. 자료형과 변수 & 상수
https://crane206265.tistory.com/56 [Java - 기초 문법] 01. 출력 정말 오랜만에 티스토리 글 쓰러 왔습니다... 이제 대학생이 되어서 수강신청을 했는데, 어쩌다 보니 2학년 전공과목부터 듣게 되어서;; 강제
crane206265.tistory.com
이 글에서는 Java의 문자열(String)에 대해 다루어보겠습니다.
자료형 String
String은 문자열을 나타내는 자료형입니다. 생성하는 방법은 두 종류가 있습니다. 단순히 ""로 감싸거나, new String("")의 형식으로 생성하거나. new 키워드 항상 새 객체를 생성한다는 특징이 있습니다. 객체에 대해서는 나중에 다루도록 하겠습니다. 지금은 그냥 "새로 생성한다" 정도로 알고 있으면 됩니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
String b = new String("Physics is mathmatics");
System.out.println(a);
System.out.println(b);
}
}
TERMINAL
Astronomy is physics
Physics is mathmatics
문자열 합치기
문자열 여러개를 합치는 방법은, 문자열 사이를 +로 연결해주면 됩니다. 예를 들어, "Astronomy" + "is physics"를 하면 "Astronomy is physics"가 되는 방식이죠.
재밌는 것은, 수끼리 + 연산을 하면 덧셈 연산이 되지만, 문자열과 수 사이에 + 연산을 하면 수를 문자열로 처리하고 연산한다는 점입니다. + 연산은 앞에부터 진행하기 때문에 아래와 같은 결과를 얻을 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
int b = 123;
int c = 123;
System.out.println(a+b+c);
System.out.println(b+c+a);
}
}
TERMINAL
Astronomy is physics123123
246Astronomy is physics
첫 번째 결과는 (a+b)+c로 처리되어서 문자열로 쭉 이어진 것이고, 두 번째 결과는 (b+c)+a로 처리되어서 덧셈을 먼저한 후 문자열로 잇게 된 것입니다.
equals 메서드
equals 메서드는 두 문자열의 값이 같은지를 비교해줍니다. 결과값은 boolean으로 반환됩니다. 문자열 a와 b를 비교하려면 a.equals(b) 또는 b.equals(a)와 같이 사용할 수 있습니다. 주의할 점은 문자열을 비교할 때 ==을 사용하는 것은 피해야한다는 것입니다. 아래 결과를 통해 설명할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
String b = "Astronomy is physics";
String c = new String("Astronomy is physics");
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(a==b);
System.out.println(a==c);
}
}
TERMINAL
true
true
true
false
보시다시피, equals 메서드는 값이 같으면 true, 다르면 false를 출력합니다. 반면 == 를 사용하면, new 키워드로 생성한 문자열은 값이 같아도 다르다는 결과가 나옵니다. new 키워드로 문자열을 생성하면 새로운 객체를 만들기 때문에, 두 문자열의 값은 같지만 주소가 달라서 생기는 일입니다.
indexOf 메서드
indexOf 메서드는 문자열에서 특정 문자열이 시작하는 인덱스 넘버를 반환합니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
System.out.println(a.indexOf("physics"));
}
}
TERMINAL
13
contains 메서드
contains 메서드는 문자열에서 특정 문자열이 있는지를 boolean으로 반환합니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
System.out.println(a.contains("physics"));
}
}
TERMINAL
true
charAt 메서드
charAt 메서드는 문자열에서 특정 위치의 문자를 char 형태로 반환합니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
System.out.println(a.charAt(10));
}
}
TERMINAL
i
replaceAll 메서드
replaceAll 메서드는 문자열에서 특정 문자열을 다른 문자열로 바꿔줍니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
System.out.println(a.replaceAll("physics","statistics"));
}
}
TERMINAL
Astronomy is statistics
substring 메서드
substring 메서드는 문자열에서 특정 구간을 추출해줍니다. 아래와 같이 사용할 수 있습니다. 이때 시작 위치는 포함하고, 끝 위치는 포함하지 않는다는 것을 유의해야 합니다. (python의 range 범위 지정과 비슷합니다.)
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics";
System.out.println(a.substring(0, 9));
}
}
TERMINAL
Astronomy
toUpperCase / toLowerCase 메서드
toUpperCase 메서드는 문자열을 모두 대문자로 변경합니다. toLowerCase 메서드는 문자열을 모두 소문자로 변경합니다. 이때 영어가 아닌 문자들은 바뀌지 않습니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy is physics!";
System.out.println(a.toUpperCase());
System.out.println(a.toLowerCase());
}
}
TERMINAL
ASTRONOMY IS PHYSICS!
astronomy is physics!
split 메서드
split 메서드는 문자열을 특정 문자열을 기준으로 구분하여 나누고, 이를 배열에 저장하여 문자열 배열을 반환합니다. 아래와 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "Astronomy,Physics,Informatics,Mathmatics";
String[] b = a.split(",");
System.out.println(b[0]+"&"+b[2]);
}
}
TERMINAL
Astronomy&Informatics
문자열 formatting
문자열 formatting은 문자열 안의 특정한 값을 바꿀 수 있게 해줍니다. 값이 계속 바뀔 부분만 formatting 해주면, 일일이 값을 입력하지 않고 편하게 사용할 수 있습니다. String.format 매서드를 사용합니다. formatting할 자리에 알맞은 format code를 넣어주고, 뒤에 값을 전달하면 됩니다. 여러개 하려면 순서대로 값을 전달해주면 됩니다.
public class Test {
public static void main(String[] args) {
String a = "Score : %d, Grade : %c";
System.out.println(String.format("Score : %d, Grade : %c", 100, 'A'));
System.out.println(String.format(a, 85, 'B'));
}
}
TERMINAL
Score : 100, Grade : A
Score : 85, Grade : B
몇 가지 format code를 정리하면 아래와 같습니다.
%s | 문자열(String) | %o | 8진수 |
%c | 문자(char) | %x | 16진수 |
%d | 정수(int, long) | %% | 문자 % 자 |
%f | 부동소수(double, float) |
%s에는 어떤 것을 대입해도 문자열로 바꾸어서 작동됩니다. %s를 받는 위치에 int 자료형 123을 넣어도 "123"으로 바꾸어서 작동된다는 거죠. 하지만 다른 것은 그렇지 않으니 유의해야합니다. (%d 자리에 double형을 넣어도 정수로 바꾸어주지 않습니다.)
정렬 및 공백 표현
%10s, %10d와 같이 쓰면 오른쪽 정렬을 사용하여 10개의 칸을 사용하여 출력하게 됩니다. 길이가 10자보다 짧더라도 공백으로 남기고 10칸을 채우는 것이죠. 물론 %s, %d 말고 다른 것도 사용 가능합니다. 왼쪽 정렬을 하고 싶다면 %-10s와 같이 사용하면 됩니다.
public class Test {
public static void main(String[] args) {
String a = "PI : %10f...";
String b = "PI : %-10f...";
System.out.println(String.format(a, 3.141592));
System.out.println(String.format(b, 3.141592));
}
}
TERMINAL
PI : 3.141592...
PI : 3.141592 ...
소수점 표현
실수를 표현할 때는 소수점 아래 몇 자리까지 표시할 것인지 지정할 수 있습니다. %.4f와 같이 쓰면, 소수점 아래 넷째자리까지 표현합니다. 원래 수가 그것보다 소수점 아래 자릿수가 많으면 반올림하여 넷째자리까지만 쓰고, 그것보다 적다면 0으로 채워서 표현합니다. 소수점 표현은 %10.4f 처럼 위의 공백 표현과 같이 사용할 수 있습니다.
public class Test {
public static void main(String[] args) {
String a = "PI : %.4f...";
System.out.println(String.format(a, 3.141592));
}
}
TERMINAL
PI : 3.1416...
System.out.printf
System.out.printf() 메서드는 System.out.println(String.format())을 줄인 것입니다. 정확히 말하면, String.format은 문자열을 리턴하는 메서드이고, String.out.printf는 문자열을 출력하는 메서드입니다.
public class Test {
public static void main(String[] args) {
String a = "PI : %.4f...";
System.out.println(String.format(a, 3.141592));
System.out.printf(a, 3.141592);
}
}
TERMINAL
PI : 3.1416...
PI : 3.1416...
이렇게 String에 대해 알아보았습니다. 유용한 메서드가 많은 것 같은데, 이를 기억해놓으면 은근히 편리해질 것 같습니다.
'프로그래밍 > Java' 카테고리의 다른 글
[Java - 기초 문법] 06. 반복문 : while문 & for문 & for each문 (2) | 2024.02.10 |
---|---|
[Java - 기초 문법] 05. 조건문 : if문 & switch문 (1) | 2024.01.26 |
[Java - 기초 문법] 04. 형변환 (type conversion / type casting) (2) | 2024.01.26 |
[Java - 기초 문법] 02. 자료형과 변수 & 상수 (2) | 2024.01.22 |
[Java - 기초 문법] 01. 출력 (2) | 2024.01.22 |