인프런에서 자바, 스프링 강의를 들으면서 배운 내용을 잘 정리해야겠다는 생각이 들어서
점프 투 자바 책을 구입했습니다!
뭔가 코딩을 공부할 때 책을 보면서 공부하는 게
단방향으로 주입해 주는 강의보다
제 속도에 맞게 한 장씩 읽어가며 공부하는 게 더 잘 맞는 것 같은 느낌입니다 후후
이번에는 자료형에 대해 정리를 하였습니다.
- 자료형(data type)이란?
데이터의 종류와 크기를 결정하는 기본 구성 요소로, 숫자, 문자열처럼 자료 형태로 사용하는 모든 것.
1. 숫자
1) 정수
정수를 표현하는 자료형은 int와 long이 있습니다.
- int
- -2147483648 ~ 2147483647
- long
- -9223372036854775808 ~ 9223372036854775807
- 숫자 맨 뒤에 대문자 L을 붙여 표현
- ex) 8748393827161746L
2) 실수
실수를 표현하는 자료형은 float과 double이 있습니다.
- float
- -3.4 * 10^38 ~ 3.4 * 10^38
- 숫자 맨 뒤에 대문자 F를 붙여 표현
- ex) 3.14F
- double
- -1.7*10^308 ~ 1.7*10^308
- 자바에서 실수형의 기본값은 double
3) 8진수와 16진수
8진수와 16진수는 int 자료형을 사용한다.
- 0... -> 8진수
- 0x... -> 16진수
2. 불
- true
- false
참(true) 또는 거짓(false)의 값을 갖는 자료형을 불(boolean) 자료형이라고 한다.
3. 문자
문자 자료형은 char을 사용합니다.
- char
- 문자 하나를 표현
- char a1 = 'a';
4. 문자열
문자열은 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");
원시 자료형
지금까지 소개한 int, long, double, float, boolean, char 자료형은 원시(primitivie) 자료형이라고 한다.
이러한 자료형은 new 키워드로 값을 생성할 수 없고,
아래와 같은 리터럴 표기 방식으로만 값을 생성할 수 있다.
- boolean result = true;
- char a = 'A';
- int i = 10000;
Wrapper 클래스
int, long, double, float, boolean, char 등의 원시 자료형에는 각각 그에 대응하는 Wrapper 클래스가 있다.
원시 자료형 | Wrapper 클래스 |
int | Integer |
long | Long |
double | Double |
float | Float |
boolean | Boolean |
char | Char |
4-1) 문자열 내장 메서드
① equals
문자열 두 개의 값이 동일한지 비교하여 결과를 리턴
public class Sample {
public static void main(String[] args) {
String a = "hello";
String b = "world";
String c = "hello";
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
}
public class Sample {
public static void main(String[] args) {
String a = "hello";
String b = new String("hello");
System.out.println(a.equals(b));
System.out.println(a==b);
}
}
문자열 a와 b는 모두 'hello'로 글자는 같지만, 서로 다른 객체이기 때문에
a==b의 리턴 값이 false로 나온다.
--> == : 같은 객체인지 판별
② IndexOf
IndexOf는 문자열에서 특정 문자열이 시작되는 위치(인덱스 값)을 리턴한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
System.out.println(a.indexOf("Java"));
}
}
③ contains
contains는 문자열에서 특정 문자열이 포함되어 있는지 여부를 리턴한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello World";
System.out.println(a.contains("World"));
System.out.println(a.contains("War"));
}
}
④ charAt
charAt은 문자열에서 특정 위치의 문자를 리턴한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
System.out.println(a.charAt(6));
}
}
⑤ replaceAll
replaceAll은 문자열에서 특정 문자열을 다른 문자녈로 바꿀 때 사용한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
System.out.println(a.replace("l", "r"));
}
}
⑥ substring
substring은 문자열에서 특정 문자열을 뽑아낼 때 사용한다.
- substring(시작 위치, 끝 위치)
- 조건 : 시작 위치 <= 끝 위치
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
System.out.println(a.substring(0,4));
}
}
⑦ toUpperCase/toLowerCase
toUpperCase는 모든 문자열을 대문자로 만들 때, toLowerCase는 모든 문자열을 소문자로 만들 때 사용한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
System.out.println(a.toUpperCase());
System.out.println(a.toLowerCase());
}
}
⑧ split
split은 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴한다.
public class Sample {
public static void main(String[] args) {
String a = "Hello Java";
String[] result = a.split("l");
}
}
4-2) 문자열 포매팅
문자열 안에 특정 값을 바꿀 수 있게 해 주는 방법이 문자열 포매팅 기법이다.
> 문자열 안에 어떤 값을 삽입하는 방법.
- "현재 온도는 18도입니다."
- "현재 온도는 20도입니다."
① 숫자 바로 대입하기
public class Sample {
public static void main(String[] args) {
System.out.println(String.format("오늘 날씨는 %d도입니다.",3));
}
}
② 문자열 바로 대입하기
public class Sample {
public static void main(String[] args) {
System.out.println(String.format("오늘 날씨는 %s도입니다.","십이"));
}
}
③ 숫자값을 나타내는 변수 대입하기
public class Sample {
public static void main(String[] args) {
int number = 13;
System.out.println(String.format("오늘 날씨는 %d도입니다.",number));
}
}
④ 값을 2개 이상 대입하기
public class Sample {
public static void main(String[] args) {
int number = 13;
String location = "수원시";
System.out.println(String.format("오늘 %s 날씨는 %d도입니다.",location,number));
}
}
4-3) 문자열 포맷 코드
종류 | 설명 |
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동 소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | 특수문자 % |
%s는 다른 어떤 형태의 값이든 변환하여 넣을 수 있음.
5. StringBuffer
StringBuffer는 문자열을 추가하거나 변경할 때 주로 사용하는 자료형이다.
public class Sample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello");
System.out.println(sb);
sb.append("_");
System.out.println(sb);
sb.append("Java");
System.out.println(sb);
String result = sb.toString();
System.out.println(result);
}
}
- 이뮤터블(immutable) : 값을 변경할 수 있는 것
ex) StringBuffer
- 뮤터블(mutable) : 값을 변경할 수 없는 것
ex) String
--> String은 값이 변경될 때마다 새로운 객체를 생성하여 리턴
4-1) StringBuffer 메서드
① insert
insert는 특정 위치에 원하는 문자열을 삽입할 때 사용하는 메서드이다.
public class Sample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello Java");
sb.insert(6, "Nice ");
System.out.println(sb.toString());
}
}
② substring
특정 위치에서 특정 위치까지의 문자열을 뽑아낼 때 사용하는 메서드이다.(String의 substring과 동일)
- substring(시작 위치, 끝 위치)
public class Sample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello Java");
System.out.println(sb.substring(0,4));
}
}
지금까지 기초적인 자료형의 종류들을 확인하고 그에 해당하는 메서드들을 살펴보았습니다.
다음 시간에는 자료형들의 집합? 여러 개의 자료형을 묶어놓은 그릇? 자료형들에 대해서 살펴보겠습니다.
감사합니다 :)