자바에서는 데이터 타입을 크게 기본 데이터 타입(Primitive Data Type)과 참조 데이터 타입(Reference Data Type)으로 나눌 수 있다.
자바에서 제공하는 8가지(boolean, char, byte, short, int, long, float, double) 기본 데이터 타입이 있다.
데이터 타입 | 크기 | 값의 범위 |
---|---|---|
byte | 1 byte | -128 ~ 127 |
short | 2 byte | -32,768 ~ 32,767 |
int | 4 byte | -2,147,483,648 ~ 2,147,483,647 |
long | 8 byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | 4 byte | 1.4E-45 ~ 3.4028235E38 |
double | 8 byte | 4.9E-324 ~ 1.7976931348623157E308 |
char | 2 byte | '\u0000' (0) ~ '\uffff' (65,535) |
boolean | 1 byte | true 또는 false |
기본 데이터 타입을 제외한 나머지 데이터 타입은 모두 참조 데이터 타입이다.
자바에서 문자열은 큰 따옴표("")로 묶여진 문자의 나열입니다.
🤍StringBuilder
- StringBuilder 클래스는 문자열을 가변적으로 처리할 수 있는 클래스로
- 문자열을 추가, 수정, 삭제할 수 있는 기능을 제공
- String 클래스와 달리, 문자열 연산 시 새로운 문자열 객체를 생성하는 것이 아니라 기존 문자열 객체를 직접 수정하여 연산한다. => 성능상의 이점을 가진다.
- StringBuilder 주요 메소드
메소드 설명 append(String str)
지정된 문자열을 현재 문자열 끝에 추가합니다. insert(int offset, String str)
지정된 위치(offset)에 문자열을 삽입합니다. delete(int start, int end)
지정된 범위(start부터 end-1까지)의 문자열을 삭제합니다. deleteCharAt(int index)
지정된 위치의 문자를 삭제합니다. replace(int start, int end, String str)
지정된 범위(start부터 end-1까지)의 문자열을 새로운 문자열(str)로 대체합니다. reverse()
문자열을 역순으로 뒤집습니다. substring(int start)
지정된 위치(start)부터 문자열 끝까지 잘라내어 반환합니다. substring(int start, int end)
지정된 범위(start부터 end-1까지)의 문자열을 잘라내어 반환합니다. capacity()
현재 버퍼의 크기를 반환합니다. ensureCapacity(int minimumCapacity)
최소 버퍼 크기를 지정합니다. 버퍼 크기는 현재 크기와 minimumCapacity 중 큰 값으로 설정됩니다.
자바에서 기본 데이터 타입은 Wrapper 클래스를 통해 객체화하여 사용할 수 있다.
String str = "Hello, world!";
String str = new String("Hello, world!");
String str1 = "Hello";
String str2 = "world";
String str3 = str1 + ", " + str2 + "!";
System.out.println(str3); // 출력: Hello, world!
메소드 | 설명 |
---|---|
length() | 문자열의 길이를 반환 |
charAt(int index) | 지정된 위치의 문자를 반환 |
equals(Object obj) | 다른 객체와 문자열 내용이 같은지 확인 |
isEmpty() | 문자열이 비어있는지 확인 |
toLowerCase() | 문자열을 소문자로 변환 |
toUpperCase() | 문자열을 대문자로 변환 |
trim() | 문자열 앞뒤 공백을 제거 |
substring(int beginIndex) | 시작 위치부터 문자열 끝까지를 잘라내어 반환 |
substring(int beginIndex, int endIndex) | 시작 위치부터 끝 위치까지의 문자열을 잘라내어 반환 |
indexOf(String str) | 문자열에서 지정된 문자열이 처음으로 등장하는 인덱스를 반환 |
lastIndexOf(String str) | 문자열에서 지정된 문자열이 마지막으로 등장하는 인덱스를 반환 |
replace(char oldChar, char newChar) | 문자열 내의 모든 oldChar를 newChar로 대체 |
replace(CharSequence target, CharSequence replacement) | 문자열 내의 모든 target 문자열을 replacement 문자열로 대체 |
split(String regex) | 정규식을 기준으로 문자열을 분리하여 문자열 배열로 반환 |
startsWith(String prefix) | 문자열이 지정된 접두사(prefix)로 시작하는지 여부를 반환 |
endsWith(String suffix) | 문자열이 지정된 접미사(suffix)로 끝나는지 여부를 반환 |
contains(CharSequence s) | 문자열이 지정된 문자열을 포함하는지 여부를 반환 |
int i = 10;
Integer integer = new Integer(i); // int에서 Integer로 변환
Integer integer2 = Integer.valueOf(i); // int에서 Integer로 변환
Integer integer = new Integer(10);
int i = integer.intValue(); // Integer에서 int로 변환
int j = integer; // Integer에서 int로 변환
byte b = 10;
int i = b;
public class TypeConversionExample {
public static void main(String[] args) {
int intValue = 10;
long longValue = 20L;
float floatValue = 3.14f;
double result1 = intValue + longValue; // int와 long 중 큰 타입인 long으로 자동 변환됨
double result2 = longValue + floatValue; // long과 float 중 큰 타입인 float으로 자동 변환됨
System.out.println("result1: " + result1);
System.out.println("result2: " + result2);
}
}
int i = 10;
byte b = (byte) i;
언어 | 기본 데이터 타입 | 객체 데이터 타입 | 언어타입 | 타입 검사 방법 |
---|---|---|---|---|
JavaScript | number, string, boolean, null, undefined, symbol, BigInt | Object, Array, Function, Date, RegExp 등 | 동적 타입 언어 | typeof 연산자, instanceof 연산자, Object.prototype.toString.call() 메소드 등 |
Python | int, float, complex, str, bytes, bytearray, bool, list, tuple, set, frozenset, dict, NoneType | 사용자 정의 클래스, 내장 클래스(list, tuple, dict 등) | 정적 타입 언어 | type() 함수, isinstance() 함수, class 속성 등 |
Java | byte, short, int, long, float, double, char, boolean | 모든 클래스 | 정적 타입 언어 | instanceof 연산자, getClass() 메소드 등 |
👀 정적타입 vs 동적타입
정적 타입 :변수의 데이터 타입을 선언하고 컴파일 타임에 데이터 타입 검사를 수행한다
동적 타입 :변수의 데이터 타입을 선언하지 않고 런타임에 데이터 타입이 결정된다
자바에서는 기본 데이터 타입과 참조 타입 간에 타입 변환이 필요할 때, 명시적으로 형변환을 해주어야 하지만 자바스크립트에서는 타입 변환이 자동으로 이루어진다.
JavaScript | Python | Java | |
---|---|---|---|
숫자형 | number | int, float, complex | byte,short,int,long, float, double |
문자열 | string | string | string |
불리언 | boolean | bool | boolean |
리스트 | array | list | ArrayList, LinkedList |
튜플 | - | tuple | - |
집합 | set | set | HashSet, TreeSet |
딕셔너리 | object | dict | HashMap, TreeMap |
null | null,undefined | None | null |
함수 | function | function | method, function |
let a = null;
console.log(a); // null
let b;
console.log(b); // undefined
let obj = {};
console.log(obj.prop); // undefined
위의 예시에서 a에는 명시적으로 null 값을 할당했으므로 null이 출력되고, b 변수는 값을 할당하지 않았으므로 undefined가 출력된다. obj 객체의 prop 프로퍼티가 존재하지 않으므로 undefined가 반환된다.