2. 정수, 실수, 증감연산, 불, 문자열, 문자열 내장 메서드, 문자열 포맷팅
1. 정수
(1) byte : -128부터 127
(2) short : -32768부터 32767
이 둘은 잘 사용하지 않지만 특정 상황에서 효율적인 메모리 사용이 필요한 경우에 사용
(3) int
: -2147483648 ~ 2147483647
int age = 10;
(4) long
: -9223372036854775808 ~ 9223372036854775807
만약 long 자료형 변수에 값을 대입할 때 int 자료형의 최댓값인 2147483647 보다 크다면, 끝에 L 를 붙여야한다. (컴파일 오류 발생 방지)
소문자도 가능하지만 숫자 1과 헷갈릴 수 있기 때문에 대문자로 쓰는 것이 좋다.
long countOfStar = 8764827384923849L;
2. 실수
(1) float
(2) double
정수를 표현하는 자료형 long 처럼 double 도 float 자료형의 최댓값보다 크면, 끝에 F 혹은 f 를 붙여야 한다. (컴파일 오류 발생 방지)
대소문자 상관없다.
e2 = 10² 이므로 아래와같이 표현할 수도 있다.
double d = 1.234e2; // 1.234 ** 10
3. 증감연산
(1) i++ : 값을 참조한 후 1 증가
(2) ++i : 1 증가 후 값 참조
int i = 0;
System.out.println(i++); // 0 출력
System.out.println(i); // 1 출력
4. 불
(1) 정의 : 참(true) 또는 거짓(false)의 값을 갖는 자료형
boolean isTrue = true;
boolean isFalse = false;
(2) 사용처
a. 불 연산의 결괏값에 대입 가능
2 > 1 // 참
1 == 2 // 거짓
b. 주로 조건문의 판단 기준 으로 사용
int base = 180;
int height = 185;
boolean isTall = height > base;
if (isTall) {
System.out.println("키가 큽니다.");
}
5. 문자열
문자열을 나타내는 자료형은 String 이다.
String a = "Happy Java";
String b = new String "Sad Java";
첫 번째 줄은 리터럴(literal) 표기 방식
두 번째 줄의 new 키워드
(1) 리터럴 표기 방식
: 고정된 값을 그대로 대입
: 동일한 리터럴을 사용한다면 새로운 String 객체를 만들지 않고 기존에 만든 것을 재활용
(2) new 키워드
: 객체를 만들 때 사용
: 항상 새로운 String 객체를 만든다.
6. 문자열 내장 메서드
(1) equals : 두 문자열이 같은지 다른
String a = "a";
String b = "b";
String c = "a";
System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력
만약 == 연산자를 사용한다면
System.out.println(a == c)); // false 출력
값은 같더라도 서로 다른 객체이기 때문에 false 를 리턴한다.
(2) indexOf : 특정 문자열이 시작되는 위치
String a = "Hello Java";
System.out.println(a.indexOf("Java")); // 6 출력
(3) contains : 특정 문자열 존재여부
String a = "Hello Java";
System.out.println(a.contains("Java")); // true 출력
System.out.println(a.contains("Python")); // false 출력
(4) charAt : 특정 위치의 문자 리턴
String a = "Hello Java";
System.out.println(a.charAt(6)); // "J" 출력
(5) replaceAll : 특정 문자열을 다른 문자열로 바꿀 때
String a = "Hello Java";
System.out.println(a.replaceAll("Java", "Python")); // Hello Python 출력
(6) substring : 특정 문자열 뽑을 때
String a = "Hello Java";
System.out.println(a.substring(0, 4)); // Hell 출력
(7) toUpperCase : 대문자로 변경
String a = "Hello Java";
System.out.println(a.toUpperCase()); // HELLO JAVA 출력
(8) toLowerCase : 소문자로 변경
String a = "Hello Java";
System.out.println(a.toLowerCase()); // hello java 출력
(9) split : 특정한 구분자로 나누어 문자열 배열로 리턴
String a = "a:b:c:d";
String[] result = a.spilt(":"); // result 는 {"a", "b", "c", "d"}
7. 문자열 포매팅
문자열 안의 특정한 값을 바꿀 수 있게 해주는 기법
즉, 문자열 안에 어떤 값을 삽입하는 방법
문자열 포매팅은 String.format 을 사용한다. -> 문자열을 리턴 해준다.
(1) 숫자 대입
System.out.println(String.format("I want to sleep for %d hours.", 10));
// I want to sleep for 10 hours.
(2) 문자열 대입
System.out.println(String.format("I want to sleep for %s hours.", "10"));
// I want to sleep for 10 hours.
(3) 숫자값을 나타내는 변수 대입
int number = 10;
System.out.println(String.format("I want to sleep for %d hours.", number));
// I want to sleep for 10 hours.
(4) 2개 이상 넣기
: 파라미터를 순서대로 전달하면 됨
int number = 10;
String adverb = "always";
System.out.println(String.format("I %s want to sleep for %d hours.", adverb, number));
// I always want to sleep for 10 hours.
(5) 문자열 포맷 코드
코드 | 설명 |
%s | 문자열 (을 포함한 모든 형태의 값) |
%c | 문자 1개 |
%d | 정수 |
%f | 부동소수 |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (% 문자 자체) |
(6) 응용
a. 공백, 정렬 표현
System.out.println(String.format("%5s", "hi"));
// □□□hi
= 전체 길이가 5인 문자열 공간에서 오른쪽 정렬을 한 후 나머지는 공백으로 남겨라
System.out.println(String.format("%-5syeji", "hi"));
// hi□□□yeji
= 전체 길이가 5인 문자열 공간에서 왼쪽 정렬을 한 후 나머지는 공백으로 채워라. 그 다음에 "yeji"로 채워라
b. 소수점
System.out.println(String.format("%.4f", 3.123456789));
// 3.1234
= 소수점 뒤에 이어질 숫자의 개수
System.out.println(String.format("%10.4f", 3.123456789));
// □□□□3.1234
= 전체 길이가 10인 문자열 공간에서 오른쪽 정렬을 한 후 나머지는 공백으로 남겨라
(7) System.out.printf
String.format 메서드는 포매팅된 문자열을 리턴한다. 따라서 System.out.println 도 같이 사용하여 해당 문자열을 출력해주었다.
하지만 System.out.printf 메서드를 사용하면 포매팅된 문자열을 출력 할 수 있다.
System.out.println(String.format("I want to sleep for %d hours.", 10));
System.out.printf("I want to sleep for %d hours.", 10);
// I want to sleep for 10 hours.
상황에 맞게 사용하면 된다.