본문 바로가기

Archived(CSE Programming)/Java

Java 자료형

자료형

자바의 자료형은 숫자(Number), 부울(boolean), 문자열(char, String), 스트링버퍼(String Buffer), 배열(Array), 리스트(List), 제네릭스(Generics), 맵(Map) 등이 있다.

 

1) 숫자는 우리가 흔히 쓰는 int, float, double, 8진수(0), 16진수(0x) 가 있다.

2) 부울은 boolean 으로 표현하며 실제 값은 true와 false 중 값을 대입한다.

3) 문자와 문자열은 char, String 으로 표현하며 사용한다. 이 때, String은 Immutable 객체로 변경할 수 없다.

이 때, 숫자와 부울, 문자는 원시자료형(Primitive)이라고 표현하는데 
Java에서 상수(Literal) 값으로 바로 대입이 가능한 자료형을 말한다. 
원시 자료형이 아닌 경우에는 new 키워드를 통해 생성하여 할당하는데 
String 형 같은 경우 상수값 대입이 가능하지만 원시 자료형이 아닌 예외적인 경우이다.

4) 스트링 버퍼(StringBuffer)는 String이 Immutable 객체로 값을 변경할 수 없는 반면에, String 값을 변경 또는 추가하기 위해 사용되는 자료형이다. 실제 String 객체에서 temp+="string" 이런식으로 사용해도 변경이 되는 것 처럼 보이지만 실제 Java 내부에서는 계속하여 새로운 String 객체를 생성하여 할당하는 것이다. StringBuffer는 append, insert, substring 등의 메소드와 함께 사용된다.

public class Test {
    public static void main(String[] args) {
        String temp = "";
        temp += "hello";
        temp += " ";
        temp += "jump to java";
        System.out.println(temp);
    }
}

5) 배열(Array)은 자료형[] 변수이름과 같은 형태로 할당하여 사용한다. 메모리 상으로 연속적으로 할당된 공간을 가져와 변수들을 하나의 배열 자료형으로 쉽게 관리할 수 있다. 

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
for (int i=0; i<weeks.length; i++) {
    System.out.println(weeks[i]);
}

6) 리스트(List)는 배열과 유사한 기능을 하지만 인덱스라는 기능을 버리고 빈 공간을 최소화한 자료형이다. 배열보다 편리한 기능을 하고 있다. 배열은 담을 수 있는 공간이 한정된 반면에 List는 제한이 없다. 주로 ArrayList를 사용하며 add, get, size, contains, remove 등의 메소드와 함께 사용된다.

참고 Array 와 List 비교
Array : 담을 수 있는 공간이 미리 정해짐, 빈 공간 가능(메모리 낭비), 인덱스 통해 접근 가능(조회 빠름)
List : 공간 재할당(속도 느림), 빈 공간 불가능(메모리 효율), 인덱스가 없음(순서라는 기준만 존재)

Array는 연속된 메모리 공간에 데이터를 그룹핑하여 저장
List는 배열의 인덱스 장점을 버리고 빈틈 없는 데이터의 적재 장점 취득(순서가 핵심)
ArrayList와 LinkedList 비교
ArrayList : 삽입삭제 연산 시 공간 재할당(성능 저하), 전체 임의 접근 빠름
LinkedList : 삽입삭제 연산 시 주소 값으로 연결(성능 빠름), 전체 순차 접근만 가능(주소로 이동)
import java.util.ArrayList;

public class TestList {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList<String>();
        pitches.add("138");
        pitches.add("129");
        pitches.add("142");

        System.out.println(pitches.get(1));
        System.out.println(pitches.size());
        System.out.println(pitches.contains("142"));

        System.out.println(pitches.remove("129"));
        System.out.println(pitches.size());
        System.out.println(pitches.remove(0));
    }
}

7) 제네릭스(Generics)는 해당 List에 담을 수 있는 자료형을 명시하는 것이다. 비교적 최근의 문법으로 제네릭스가 없었을 때는 ArrayList에 아무 자료형이나 넣은 다음에 다시 get을 통해 가져올 때 원하는 변수형으로 형 변환을 해줘야 했다. 그러나 Generics를 통해 <String> 등과 같이 자료형을 명시하면서 특정 자료형만 가져올 수 있게 되어 편리하게 사용 가능한 문법이다.

ArrayList<String> aList = new ArrayList<String>();
aList.add("hello");
aList.add("java");

String hello = aList.get(0);
String java = aList.get(1);

8) 맵(Map)은 하나의 변수 내에 field와 값의 대응관계를 쉽게 표현이 가능한 자료형이다. Dictionary와 유사한 자료형으로 HashMap 자료형을 주로 많이 사용한다. put, get, containsKey, remove, size 등의 메소드와 함께 사용된다.

import java.util.HashMap;

public class TestMap {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("people", "사람");
        map.put("baseball", "야구");

        System.out.println(map.get("people"));
        System.out.println(map.containsKey("people"));
        System.out.println(map.remove("people"));
        System.out.println(map.size());
    }
}

메인메소드

자바의 메인메소드는 Public static void main(String args[]) 와 같은 형태를 지닌다.

메인메소드는 프로그램의 시작을 뜻하는 메소드로, 메인 메소드 없이 단독으로 프로그램을 실행시킬 수 없다. 

그리고 String args[]는 메인 메소드의 파라미터로 실행 시 넘겨줬던 파라미터들을 담는다.

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

클래스 변수 인스턴스 변수

접근 제어자

 

 

 

오버라이딩 vs 오버로딩

추상클래스, 추상메소드, 인터페이스, 컬렉션

패키지 내부 접근제어자

예외처리

가비지 컬렉터

http://blog.naver.com/PostView.nhn?blogId=44jopd&logNo=70175145774

'Archived(CSE Programming) > Java' 카테고리의 다른 글

Java 컬렉션(Collection)  (0) 2019.11.03
Java 추상클래스, 인터페이스  (0) 2019.11.03
Java 오버로딩과 오버라이딩  (0) 2019.11.02
Java 멤버 변수, 접근제어자  (0) 2019.11.02
Java 언어의 특징  (0) 2019.11.02