자바의 자료형 정리에 앞서 변수란 무엇인가를 살펴 보아야한다.
[변수란]
데이터의 저장과 참조를 위해 할당된 메모리 공간에 붙인 이름을 '변수' 라고 한다. 즉, 변수는 메모리 공간에 붙여진 이름이다. 메모리 공간의 할당과 접근 때문에 변수라는 개념이 존재하고, 코드상에서는 변수라는 것을 선언하면 메모리 공간이 할당 되고 변수명을 이용해 메모리 공간에 접근할 수 있는 것이다.
[JAVA의 자료형]
변수에 저장할 데이터의 유형을 알리기 위해 필요한 것이 자료형(Data Type)이다. Java의 자료형에는 기본형(Primitive Type), 참조형(Reference Type) 2가지가 있다.
- Primitive Type
1. Boolean Type(boolean)
2. Numeric Type
2-1) Integral Type
2-1-1) Integer Type(short, int, long)
2-1-2) Floating Point Type(float, double)
2-2) Character Type(char)
- Reference Type
1. Class Type
2. Interface Type
3. Array Type
4. Enum Type
5. etc.
[Primitive Type]
자바에서 기본적으로 제공해주는 기본 자료형으로 primitive type이라 하며 반드시사용하기 전에 선언 되어야 한다. 기본형 데이터 타입은 변수에 값이 직접 저장되어 스택(stack) 영역에 저장되어 있다.
* BigInteger
long타입을 사용한다 하더라도 가장 큰값은 9223372036854775807이다. 이것보다 더 큰 숫자가 필요하다면 BigInteger를 사용하면 된다. 하지만 일반적인 오퍼레이터 연산자는 사용할 수 없다. 대신 .add(), .subtract(), .multiply(), .divide() 메소드가 제공이 되고 매개변수 또한 BigInteger를 받는다.
[Reference Type]
참조형은 기본적으로 java.lang.Object를 상속 받으면 참조형이 된다. 참조형 데이터 타입은 값이 저장되어 있는것이 아니라 값의 주소값이 힙(heap) 영역에 저장되어있다. 참조형에는 클래스형Class Type, 인터페이스형Interface Type, 배열형Array Type이 있다.
Class Type
클래스형은 기본형과 다르게 객체를 참조하는 형태이다. 아래의 예시를 보면 Person 클래스를 정의하고 인스턴스를 생성하여 사용하게 된다.
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public void greet() {
System.out.println("나는 " + name );
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("해니");
person.greet();
}
}
Interface Type
인터페이스 클래스는 새로운 참조 자료형을 만드는 것과 같다. 또한 인터페이스도 자료형이기 때문에 자료형으로써 자신을 구현한 객체의 주소를 가질 수 있다. 그러나 인터페이스에 정의된 메서드만 사용이 가능하다.
아래의 코드에서 보는 것과 같이 "MyInterface" 라는 인터페이스를 정의하고 있으며 이 인터페이스는 하나의 doSometing 을 선언한다. 인터페이스를 구현하는 클래스는 반드시 doSometing 메서드를 구현해야 한다.
interface MyInterface {
void doSomething();
}
Array Type
배열형은 기본형으로 만들 수 있고 참조형으로도 만들 수 있다.
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println("Number " + (i + 1) + ": " + numbers[i]);
}
}
}
'JAVA' 카테고리의 다른 글
MVC 모델 (0) | 2023.10.27 |
---|---|
StringBuilder 사용법과 메서드 정리 (0) | 2023.09.09 |
Query String (쿼리스트링)의 개념 (0) | 2023.09.04 |
Java Robot 클래스 delay 적용하기 (1) | 2023.09.02 |
Java Robot 클래스 keyPress, keyRelease 적용하기 (0) | 2023.09.01 |