Java

Java 자료형 (Java Data Types)

blackbearwow 2024. 9. 6. 17:36

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