1. Java 자료형
가. 기본(basic/primitive) 타입:: 8개
: 미리 정해진 크기, 변수 자체에 값 저장
종류 | 자료형 | 크기 | 범위 | 값 예시 |
논리형 | boolean | 1Bit | true / false | |
문자형 | char | 2Byte | Unicode | a |
정수형 | byte | 1Byte | -128~127 | 1 |
short | 2Byte | -32,768~32,767 | 1 | |
int | 4Byte | -2,147,483,648 ~ 2,147,483,647 (2의 31승) |
1 | |
long | 8Byte | -2의 63승 ~ (2의 63승-1) | 1 | |
실수형 | float | 4Byte | -3.4E-38 ~ 3.4E+38 | 1.0 |
double | 8Byte | -1.7E-308 ~ 1.7E+308 | 1.0 |
나. 참조(reference) 타입::1개
: 미리 정해질 수 없는 데이터의 표현, 변수에는 실제 값을 참조할 수 있는 주소 저장
기본형이 아닌 자료형은 모두 레퍼런스타입
용도는 3가지:: 배열/클래스/인터페이스
1) 배열(Array)에 대한 레퍼런스
: [ ]를 선언하여 배열 지정, 배열형 변수는 배열의 주소를 가지고 있음
[ ][ ]처럼 중첩 괄호를 사용하여 다중 배열 가능
1
2
3
4
5
|
//사용 예시
int[] integerArray = new int[4]; //크기 4의 정수형 배열
char[] charArray = new char[10]; //크기 10의 문자형 배열
int[][] twoDimensionalIntArray = new int[4][5]; //크기 4행 5열의 2차원 정수형 배열
|
cs |
2) 클래스(Class)에 대한 레퍼런스
: 객체를 참조하는 형태, 선언된 객체를 가리키는 변수는 객체 값이 아닌 객체의 주소값을 가지고 있음
String, Wrapper 등의 자료형은 아래에서 설명
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//사용 예시
class MyObject{
private int index, number;
MyObject(int index, int number){
this.index = index;
this.number = number;
}
public void setNumber(int newNumber){
this.number = newNumber;
}
public int getNumber(){
return this.number;
}
}
//활용
MyObject obj1 = new MyObject(0, 10);
MyObject obj2 = new MyObject(1, 15);
System.out.println(obj1.getNumber()); //result is 10
System.out.println(obj2.getNumber()); //result is 15
obj2 = obj1; //obj1의 값(obj1주소)를 obj2에 복사 > obj2도 ojb1을 가리키게 됨.
obj1.setNumber(35);
System.out.println(obj1.getNumber()); //result is 35 > 변경된 number 값 출력
System.out.println(obj2.getNumber()); //result is 35 > 변경된 값이 출력됨
|
cs |
3) 인터페이스(Interface)에 대한 레퍼런스
: 인터페이스는 추상 메소드와 상수만 있고, 필드가 없는 클래스와 같음 > 인터페이스를 참조하는 형태
인터페이스 자체는 객체 생성 불가능, 다만 자료형으로 인터페이스를 구현한 객체를 가리키는 주소값은 담을 수 있음
1
2
3
4
5
6
7
8
9
10
11
|
//사용 예시
interface MyInterface{
int index = 10;
int number = 5;
void setNumber(int newNumber);
int getNumber();
}
//구현 클래스: MyInterfaceImpl.class
MyInterface myInter = new MyInterfaceImpl(); //자료형이기 때문에 객체의 주소값을 담을 수 있음
|
cs |
2. Java 기본 패키지 中
가. String
: 문자열 자료형. 스트링 리터럴도 모두 String 객체로 처리됨
(스트링 리터럴은 자바 내부에서 리터럴 테이블로 특별히 관리하여 동일한 리터럴을 공유
반면, new String()으로 생성된 문자열은 힙 메모리에 생성됨)
스트링 객체는 수정 불가능
1
2
3
4
|
//사용 사례
String str1 = "abcd"; //스트링 리터럴로 String 객체 생성
String str2 = new String("abcd"); //String클래스 생성자로 String 객체 생성
|
cs |
나. StringBuffer
: 문자열 자료형. 문자열을 저장하는 가변 버퍼 > 저장된 문자열 수정 가능
1
2
3
4
5
|
//사용 사례
StringBuffer sb = new StringBuffer("abcd");
//수정
sb.append("e"); // sb > "abcde"
|
cs |
다. Wrapper
: 기본 타입 자료형을 객체로 다루기 위한 클래스::Boolean, Byte, Short, Integer, Long, Character, Double, Float
기본 타입 값을 문자열로 변환하거나, 문자열을 기본 타입 값으로 변환 가능
클래스의 많은 메소드가 static 타입 > 클래스 이름으로 바로 메소드 호출 가능
1
2
3
4
5
6
|
//사용 사례
Integer i = new Integer(100); //정수 10을 Integer 객체로 객체화
Character c = new Character('a'); //문자 a를 Character 객체로 객체화
//변환
int i = Integer.parseInt("1000"); //문자 1000을 정수 1000으로 변환
|
cs |
라. Collection
: 배열이 가진 고정크기의 단점 극복, 객체를 삽입/삭제/검색할 수 있는 가변 크기 컨테이너
ArrayList, LinkedList, Set, Vector, Map 등
collection은 Generics기법으로 구현됨
1) Generics
: Collection클래스의 이름에는 <E>, <K>, <V> 등의 타입 매개변수가 포함되어 표현됨 ex)ArrayList<E>
E가 아닌 특정 타입(Integer, String 등)을 지정하면, 특정 타입 객체만 저장하는 컬렉션
특정 타입만 다루지 않고, 여러 종류의 타입으로 사용할 수 있도록 컬렉션을 일반화 시키기 위해 <E>를 사용
E를 일반화시킨 타입, 제네릭 타입(generic type)이라고 부름
참고
황기대·김효수, 명품 Java Programing(개정 3판) ((주)생능출판사, 2017)
박응용, 점프 투 자바 (2021, https://wikidocs.net/book/31)
'Computer Science > Java' 카테고리의 다른 글
[Java] 객체지향프로그래밍(OOP, Object Oriented Programming) (0) | 2021.12.13 |
---|---|
[Java] 개요(등장배경/실행과정/특징/장단점) (0) | 2021.12.06 |
댓글