1. 원시적인 데이터 타입 (Primitive Data Types)
원시적인 데이터 타입은 사이즈와 변수 값의 타입을 명시하고, 메소드가 없다.
데이터 타입 | 사이즈 | 선언 | 설명 |
byte | 1 바이트 | byte num = 100; | -128 ~ 127 정수 저장 |
short | 2 바이트 | short num = 5000; | -32,768 ~ 32,767 정수 저장 |
int | 4 바이트 | int num = 100000; | -2,147,483,648 ~ 2,147,483,647 정수 저장 |
long | 8 바이트 | long num = 15000000000L; | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 정수 저장 |
float | 4 바이트 | float num = 5.75f; | 실수를 저장한다. 소수점 6~7자리를 저장하기에 충분함 |
double | 8 바이트 | double num = 19.99d; | 실수를 저장한다. 소수점 15자리를 저장하는데 충분함 |
boolean | 1 비트 | boolean flag = true; | true 또는 false 값을 저장 |
char | 2 바이트 | char ch = '뷁'; | 하나의 문자나 ASCII값을 저장 |
타입 캐스팅 (Type Casting)
원시 데이터 타입 값을 다른 원시 데이터 타입에 할당할 때 타입 캐스팅이 일어난다.
- 커지는 캐스팅 (자동) - 작은 사이즈 타입에서 큰 사이즈 타입으로 변환
byte -> short -> char -> int -> long -> float -> double
- 좁아지는 캐스팅 (수동) - 큰 사이즈 타입에서 작은 사이즈 타입으로 변환
double -> float -> long -> int -> chat -> short -> byte
2. 레퍼런스 타입 (Reference types)
객체를 참조하기 때문에 레퍼런스 타입이라고 불린다.
레퍼런스 타입은 메소드를 호출해 특정 작업을 할 수 있지만, 원시적인 데이터 타입은 아니다.
원시적인 데이터 타입은 항상 값을 가지고있지만, 레퍼런스 타입은 null일 수 있다.
원시적인 데이터 타입은 소문자로 시작하며, 레퍼런스 타입은 대문자로 시작한다.
2.1. Wrapper Classes
Wrapper 클래스는 원시적인 데이터 타입을 객체로 다룰 수 있게 해준다.
다음은 원시적인 데이터 타입에 해당되는 Wrapper 클래스이다.
Primitive Data Type | Wrapper Class |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
원시적인 데이터 타입을 사용할 수 없고 객체만을 사용해야하는 상황이 있다.
ArrayList같은 것이 그 예이다.
ArrayList<int> myNumbers = new ArrayList<int>(); // Invalid
ArrayList<Integer> myNumbers = new ArrayList<Integer>(); // Valid
2.2. String
문자열 선언은 큰 따옴표 안에 한다.
String str = "hello world";
특수 문자 - 문자열은 큰 따옴표 안에 작성되어야 함으로, 몇몇 문자는 backslash (\)문자를 사용한다.
- \' - ' (작은 따옴표)
- \" - " (큰 따옴표)
- \\ - \ (백슬래쉬)
- \n - 개행
- \r - 캐리지 리턴
- \t - 탭
- \b - 백스페이스
문자열 연결은 .concat()메소드로 할 수 있지만 + 연산자로도 가능하다.
하지만 숫자와 문자열의 + 연산을 조심해야한다.
- 숫자 + 숫자 = 숫자
- 숫자 + 문자열 = 문자열
- 문자열 + 숫자 = 문자열
- 문자열 + 문자열 = 문자열
이 외에도 다양한 문자열 메소드들이 있다.
Method | 설명 | 반환 타입 |
charAt(int index) | 해당 인덱스에 있는 문자를 반환 | char |
codePointAt(int index) | 명시된 인덱스에 있는 문자의 유니코드를 반환 | int |
codePointBefore(int index) | 명시된 인덱스 전에 있는 문자의 유니코드를 반환 | int |
codePointCount(int startIndex, int endIndex) | 문자열에서 명시된 유니코드의 수를 반환 | int |
compareTo(String string2) compareTo(Object object) |
사전적으로 어떤 문자열이 앞서는지. 음수면 문자열이 string2보다 사전적으로 작은 것이다. | int |
compareToIgnoreCase(String string2) | 사전적으로 어떤 문자열이 앞서는지. 대소문자를 무시한다. | int |
concat(String string2) | 문자열 끝에 다른 문자열을 연결한다. | String |
contains(CharSequence chars) | 문자열이 명시된 문자열을 포함하는지 아닌지. | boolean |
contentEquals(StringBuffer chars) contentEquals(CharSequence chars) |
문자열이 명시된 문자열과 내용이 똑같은지 아닌지 | boolean |
copyValueOf(char[] data, int offset, int count) | char 배열을 지정된 offset부터 count길이만큼 문자열로 만든다 | String |
endsWith(String chars) | 문자열이 명시된 문자(열)로 끝나는지 아닌지 | boolean |
equals(Object anotherObject) | 두 문자열이 같은지 아닌지 | boolean |
equalsIgnoreCase(String anotherString) | 두 문자열이 같은지 아닌지. 대소문자를 무시한다. | boolean |
format(String format, Object... args) format(Locale locale, String format, Object... args) |
포맷된 문자열 반환 | String |
getBytes() getBytes(Charset charset) |
문자열을 바이트의 배열로 변환 | byte[] |
getChars(int start, int end, char[] destination, int position) | 문자열의 문자들을 char배열에 복사한다. | void |
hashCode() | 문자열의 해시코드를 반환 | int |
indexOf(String str) indexOf(String str, int fromIndex) indexOf(int char) indexOf(int char, int fromIndex) |
명시된 문자(열)의 첫번째 인덱스를 반환 | int |
isEmpty() | 문자열이 비었는지 아닌지 | boolean |
join(CharSequence separator, CharSequence... elements) join(CharSequence separator, Iterable elements) |
하나 이상의 문자열을 명시된 분리기로 연결한다 | String |
lastIndexOf(String str) lastIndexOf(String str, int fromIndex) lastIndexOf(int char) lastIndexOf(int char, int fromIndex) |
문자(열)이 마지막으로 나타난 인덱스를 반환 | int |
length() | 문자열의 길이를 반환 | int |
matches(String regex) | 문자열 전체가 정규표현식과 일치하는지 아닌지 | boolean |
replace(char searchChar, char newChar) | 특정 문자를 모두 새로운 문자로 바꾼다 | String |
replaceAll(String regex, String replacement) | 정규표현식과 일치하는 부분문자열을 모두 대체 문자열로 바꾼다 | String |
replaceFirst(String regex, String replacement) | 정규표현식과 일치하는 첫번째 부분문자열을 대체 문자열로 바꾼다 | String |
split(String regex) split(String regex, int limit) |
정규표현식을 분리기로 사용해 여러 부분문자열 배열로 만든다 | String[] |
startsWith(String chars) | 명시된 문자열로 시작하는지 | boolean |
subSequence(int start, int end) | 부분문자열을 반환 | CharSequence |
substring(int start, int end) substring(int start) |
부분문자열을 반환 | String |
toCharArray() | char 배열로 반환 | char[] |
toLowerCase() | 소문자로 만들어 반환 | String |
toUpperCase() | 대문자로 만들어 반환 | String |
toString() | 문자열 값 반환 | String |
trim() | 시작과 끝의 공백을 지운다 | String |
valueOf(boolean data) valueOf(char data) valueOf(char[] data) valueOf(char[] data, int start, int length) valueOf(double data) valueOf(float data) valueOf(int data) valueOf(long data) valueOf(Object data) |
명시된 값을 문자열 표현으로 반환 | String |
2.3. Arrays
배열의 선언
String[] strArr;
String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
int[] nums = {1, 2, 3, 4}
Arrays의 메소드
메소드 | 설명 |
compare(array1, array2) | 사전적으로 두 배열을 비교한다. 음수라면 앞 배열이 사전적으로 앞선다. |
copyOf(array, int newLength) | 명시된 길이만큼 배열요소를 새로운 배열로 반환한다 |
deepEquals() | 두 배열이 같은지 확인한다. 여러 차원 배열 비교에 사용 |
equals(array1, array2) | 두 배열이 같은지 확인한다. 1차원 배열 비교에 사용 |
fill(array, value) fill(array, start, end, value) |
배열에 명시된 값으로 채운다. |
mismatch(array1, array2) | 두 배열의 첫번째 다른 부분의 인덱스 반환. 없다면 -1반환 |
sort(array) sort(array, start, end) |
오름차순으로 배열을 정렬한다 |
Arrays의 속성
- length - 배열의 길이를 반환한다
2.4. Math
Math 클래스는 다양한 수학적인 작업을 할 수 있는 메소드들이 있다.
Method | 설명 | 반환 타입 |
abs(x) | x의 절대값 반환 | double|float|int|long |
ceil(x) | 올림한 정수 반환 | double |
floor(x) | 내림한 정수 반환 | double |
round(x) | 반올림한 정수 반환 | long|int |
random() | 0 ~ 1 랜덤한 숫자 반환 | double |
pow(x, y) | x를 y번 곱한 값 반환 | double |
max(x, y) | 가장 큰 값 반환 | double|float|int|long |
min(x, y) | 가장 작은 값 반환 | double|float|int|long |
log(x) | 베이스 E의 로그값 반환 | double |
log10(x) | 베이스 10의 로그값 반환 | double |
sqrt(x) | 루트x의 값 | double |
sin(x) | 싸인 x의 값 | double |
asin(x) | 아크싸인 x의 값 | double |
cos(x) | 코싸인 x의 값 | double |
acos(x) | 아크코싸인 x의 값 | double |
tan(x) | 탄젠트 x의 값 | double |
atan(x) | 아크탄젠트 x의 값 | double |
'Java' 카테고리의 다른 글
Java Class (1) | 2024.09.07 |
---|---|
Java 연산자 우선순위 (Operator Precedence in Java) (0) | 2024.09.06 |
Java 기본 문법 (0) | 2024.09.06 |
Java Platform (2) | 2024.09.06 |
Java 설치, 실행 (0) | 2024.09.05 |