- 숫자
- int (4byte) : 정수형, 범위 : -2147483647 ~ 2147483647(10자리)
- long (8byte) : 정수형, 범위 : -9223372036854775808 ~ 9223372036854775807(19자리)
- float (4byte) : 실수형, 접미사 f or F, 소수점 6자리까지 오차없이 표현가능
- double (8byte) : 실수형, 접미사 생략가능(d or D), 소수점 15자리까지 오차없이 표현가능
- 문자열
- String은 기본적으로 원시자료형(int, char, long, boolean ...)은 아니지만 특별 대우를 받아, 리터럴 표기가 가능하다
ex) String str = "ABC"
String str = new String("ABC") - 문자열 내장 메소드
1. equals() : 두 개의 문자열이 동일한지 확인, true or false 반환
2. substring() : 문자열 중 특정 부분을 뽑아낼 때 사용, str.substring(시작위치, 끝위치) * 끝위치 자체는 포함이 안되므로 원하는 끝 위치 인덱스 값에 +1을 해서 채워넣자.
3. split() : 문자열 중 특정 구분자로 문자열을 나누어 문자열 배열로 반환
String a = "a:b:c:d";
String[] str = a.split(":"); // str = {"a", "b", "c", "d"}
4. indexOf() : 특정 문자열이 시작되는 인덱스를 반환 , 역탐색은 lastIndexOf(), 특정 문자열이 중복되어도 첫번째로 마주친 문자열의 인덱스를 추출
String a = "Hello World";
System.out.println(a.indexOf("World")); // 6
5. contains() : 특정 문자열이 포함되어 있는지 확인, true or false 반환
String a = "Hello World";
System.out.println(a.contains("World")); // true
6. charAt() : 특정 문자열에서의 인덱스에 해당하는 문자 반환
String a = "Hello World";
System.out.println(a.charAt(6)); // W
7. replaceAll() : 특정 문자열을 다른 문자열로 변경
String a = "Hello World";
System.out.println(a.replaceAll("World", "Java")); // Hello Java
8. toUpperCase() : 문자열을 대문자로 변환, 소문자 변환은 toLowerCase()
String a = "Hello World";
System.out.println(a.toUpperCase()); // HELLO WORLD - 문자열 포맷팅
다음과 같이 문자열 내의 특정 문자만 바꾸고 싶을 때 사용하는 기법이다.
int number = 10;
String day = "three";
System.out.println(String.format("I ate %d apples. so I was sick for %s days.", number, day));
I ate 10 apples. so I was sick for three days.
문자열 포맷 코드)
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
1. 정렬과 공백
System.out.println(String.format("%10s", "hi")); // " hi" 출력
hi
위와 같이 %10s를 붙이면 크기가 10인 문자열을 생성하고 우측 정렬로 "hi"를 넣으라는 의미이다.
반대로 좌측 정렬은 %-10s를 붙이면 된다.
2. 소수점 표현
System.out.println(String.format("%.4f", 3.42134234)); // 3.4213 출력
3.4213
위와 같이 나타낼 소수점 자리수를 정해줄 수 있다.
- StringBuffer
- String은 기본적으로 값이 변경불가이지만, StringBuffer은 변경가능하다.
메모리의 관점에서, StringBuffer을 사용하면 단 하나의 객체를 생성함으로써 반복해서 객체를 찍어내는 String보다 이득이라고 볼 수 있지만, StringBuffer자체가 무겁기 때문에 문자열을 자주 고쳐야한다면 StringBuffer을 사용하고, 아니면 String을 사용하는것이 올바르다.
아래는 String과 StringBuffer을 사용하여 같은 결과를 얻어내는 예제이다.
1. StringBuffer사용
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("jump to java");
String result = sb.toString();
System.out.println(result); // "hello jump to java" 출력
hello jump to java
2. String 사용
String result = "";
result += "hello";
result += " ";
result += "jump to java";
System.out.println(result); // "hello jump to java" 출력
hello jump to java
결과는 같지만, String의 경우 result = result + " "; 의 형태로 객체를 계속 찍어내는 모습이다.
'Java' 카테고리의 다른 글
[Java] Call by value & reference (0) | 2023.05.26 |
---|---|
[Java] for each문 & switch/case문 (0) | 2023.05.25 |
[Java] Class (클래스), Method (메소드), 생성자 (0) | 2023.05.24 |
[Java] 자료형 (Map, Set) (0) | 2023.05.24 |
[Java] 자료형 (배열, 리스트) (0) | 2023.05.23 |