int a = 1; // 정수 (정수 리터럴)
double b = 1.5; // 실수 (실수 리터럴)
boolean c = false; // boolean (불리언 리터럴), true/false 입력 가능
char d = 'A'; // 문자 하나 (문자 리터럴), 작은 따옴표('') 사용
String e = "string"; // (문자열 리터럴) "문자열"을 다루는 특별한 타입, 큰 따옴표("") 사용
// 정수
byte b = 127; // -128 ~ 127
short s = 32767; // -32,768 ~ 32,767
int i = 2147483647; // 약 +- 20억 (정수 기본)
long l = 9,223,372,036,854,775,807; // -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
// 실수
float f = 10.0f;
double d = 10.1; // (실수 기본)
// 정밀도 : float < double
1. 정수 : int
, long
: 자바는 기본으로 int
를 사용한다.만약 20억이 넘을것 같으면 long
을 쓰면 된다. 만약 파일을 다룬다면 byte
를 사용한다.
2. 실수 : double
: 고민하지 말고 double
을 쓰면 된다.
3. Boolean : boolean
4. 문자열 : String
: 문자 하나든 문자열이든 모두 String
을 사용하는 것이 편리하다.(큰 따옴표""
사용)
USER_LIMIT
)org.spring.boot
)
- 객체를 참조한다.
- 변수는 객체의 메모리 주소를 저장하며, 이를 통해 객체에 접근한다.
- 참조 변수의 기본값
- 초기화되지 않은 참조 변수의 기본값은
null
이다.- 동적할당
- 객체는
new
키워드를 사용해 동적으로 생성되며, 가비지 컬렉터에 의해 관리된다.- 주소 저장
- 힙 메모리를 사용해 객체를 저장하고 관리한다.
- 클래스 기반
- 사용자 정의 클래스 타입 또는 자바가 제공하는 클래스 타입을 사용할 수 있다.
사용자가 정의한 클래스 또는 자바 라이브러리의 클래스 인스턴스
String str = 'class';
MyClass object = new MyClass();
동일한 타입의 여러 요소를 저장하는 컬렉션
int[] numbers = new int[0];
String[] strings = new String[5];
구현된 메서드 없이 메서드의 시그니처만 정의한 타입
List<String> list = new ArrayList<>();
⛔️ caution!
참조 자료형을 사용할 때엔 객체의 생성, 접근, 메모리 관리에 주의해야 한다.
객체는
new
키워드로 생성되며 가비지 컬렉터가 더 이상 사용되지 않는 객체를 자동으로 정리하긴 하지만, 개발자 또한 메모리 누수 방지를 위해 불필요한 참조를 제거하는 것이 좋다.
💡핵심 키워드
- Array : 고정된 크기, 빠른 접근, 기본 및 참조 타입 모두 지원
- ArrayList : 동적 크기 조정, 다양한 메서드, 객체만 저장 가능
고정된 데이터 세트를 다룰 때는 Array
을, 데이터의 크기가 자주 변경되거나 복잡한 데이터 조작이 필요할 때는 ArrayList
를 사용하는 것이 좋다.
기본 자료형이나 객체 참조를 위한 고정된 크기의 연속적인 메모리 공간이다.
int[] numbers = new int[5];
String[] names = {"Alice", "Bob", "Charlie"};
int
, double
등) 또는 객체 참조(String
, MyClass
등)를 저장할 수 있다.[]
)를 사용해 선언한다.
ArrayList
는java.util
패키지의 일부로, 크기가 동적으로 변하는 배열을 말한다. 주로 배열을 사용해 요소를 저장하는 용도로 사용한다.
ArrayList<String> list = new ArrayList<>();
list.add('Cat');
lst.add('Puppy');
Collection Framework는 데이터 그룹을 저장하는 클래스들을 표준화한 설계를 말한다.
자바 1.2 이전까지 Vertor, Hashtable, Properties와 같은 컬렉션 클래스나 다수 데이터를 저장할 수 있는 클래스들은 서로 다른 방식으로 다뤄야 하는 번거로움이 있었다.
하지만 자바 1.2버전부터 컬렉션 프레임워크(java.util 패키지
) 를 지원하면서 모든 컬렉션을 표준화된 방법으로 작성할 수 있게 되었다.
👉 컬렉션 프레임워크의 지원으로 이전보다 객체지향적이고 재사용성 높은 코드 작성이 가능해졌는데, 주요 장점은 다음과 같다.
순서가 있는 데이터 집합으로 데이터 중복을 허용한다.
O(N)
)push
, pop
메서드를 사용한다.처음 들어온 원소가 처음으로 나가는 FIFO(First-In-First-Out) 특징을 가진다.
순서가 없는 데이터 집합으로 데이터 중복을 허용하지 않는다.
hashCode()
메소드를 호출한다.equals()
로 두 객체를 비교하여 동등성을 판단한다.Key - Value 쌍으로 이루어진 데이터의 집합으로, 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다. 그리고 순서는 유지되지 않는다.
get()
, put()
, remove()
등 sycronized 키워드가 붙어있다.Map.Entry
를 저장한다.📂 참고자료