본문 바로가기
Java

[Java] 자바의 기초 - 자료형

by 잉나영 2025. 5. 15.
728x90

1. 숫자형 자료형

1) 정수 (int, long)

자료형 표현범위
int -2147483648 ~ 2147483647
long -9223372036854775808 ~ 9223372036854775807

주로 int를 사용하며
long을 사용할 경우 숫자 뒤에 L을 붙인다


2) 실수 (float, double)

자료형 표현범위
float -3.4 _ 10^38 ~ 3.4 _ 10^38
double -1.7 _ 10^308 ~ 1.7 _ 10^308

주로 double을 사용하며
float를 사용할 경우 숫자 뒤에 F를 붙인다


3) 8진수와 16진수 (int)

int자료형을 사용하여 표현하는데

  • 8진수 : 숫자 0으로 시작
  • 16진수 : 0x 로 시작

4) 숫자 연산

사칙연산은 아래와 같이 이용된다.

public class Sample {
    public static void main(String[] args) {
        int a = 10;
        int b = 5 ;

        System.out.println(a+b); // 15
        System.out.println(a-b); // 5
        System.out.println(a*b); // 50
        System.out.println(a/b); // 2

        // 나머지값
        System.out.println(a%b); // 0
        System.out.println(7%3); // 1
        System.out.println(3%7); // 3
        //3은 7보다 작기 때문에 나눌 수 없고, 나머지는 그대로 3
    }
}

5) 증감 연산 (++,--)

표현 의미 실행 순서
i++ 값을 **먼저 사용(참조)**하고, 그 후 1 증가 참조 → 증가
++i 값을 먼저 1 증가시키고, 그 값을 사용 증가 → 참조
i-- 값을 **먼저 사용(참조)**하고, 그 후 1 감소 참조 → 감소
--i 값을 먼저 1 감소시키고, 그 값을 사용 감소 → 참조

2. 불(boolean) 자료형 (boolean)

boolean 대입되는 값은 참과 거짓으로 이뤄져있다.

boolean 대입 값
true
false 거짓

3. 문자 자료형 (char)

char을 이용한다.

char a1 = 'a';

작은 따옴표를 이용하여 문자를 표현한다.


4. 문자열 자료형 (String)

String을 이용한다.

String a = "Hello";
String b = "a";
String c = "1234";

쌍 따옴표를 이용하여 문자열을 표현한다.


1) 문자열 내장 메서드

메서드 설명
equals 문자열 2개가 같은지 비교하여 결과값을 리턴
indexOf 문자열에서 특정 문자열이 시작되는 위치(인덱스값)를 리턴
contains 문자열에서 특정 문자열이 포함되어 있는지 여부를 리턴
charAt 문자열에서 특정 위치의 문자를 리턴
replaceAll 문자열에서 특정 문자열을 다른 문자열로 바꿀 때
substring 문자열에서 특정 문자열을 뽑아낼 때 사용
toUpperCase 문자열을 모두 대문자로 변경할 때 사용
toLowerCase 문자열을 모두 소문자로 변경할 때 사용
split 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴
// equals
String a = "hello";
String b = "java";
String c = "hello";
System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력

// indexOf
String a = "Hello Java";
System.out.println(a.indexOf("Java"));  // 6 출력

// contains
String a = "Hello Java";
System.out.println(a.contains("Java"));  // true 출력

// charAt
String a = "Hello Java";
System.out.println(a.charAt(6));  // "J" 출력

// replaceAll
String a = "Hello Java";
System.out.println(a.replaceAll("Java", "World"));  // Hello World 출력

// substring
String a = "Hello Java";
System.out.println(a.substring(0, 4));  // Hell 출력

// toUpperCase
String a = "Hello Java";
System.out.println(a.toUpperCase());  // HELLO JAVA 출력

// split
String a = "a:b:c:d";
String[] result = a.split(":");  // result는 {"a", "b", "c", "d"}

2) 문자열 포매팅 (String.format)

문자열 안의 특정한 값을 바꿀 수 있게 해주는 것
→ 문자열 안에 어떤 값을 삽입하는 방법

코드 설명
%s 문자열 (String)
%c 문자 1개 (character)
%d 정수 (Integer)
%f 부동소수 (floating-point)
%o 8진수
%x 16진수
%% Literal % (문자 %자체)
// 숫자 대입
System.out.println(String.format("I eat %d apples.", 3));  // "I eat 3 apples." 출력

// 문자열 대입
System.out.println(String.format("I eat %s apples.", "five"));  // "I eat five apples." 출력

// 변수값 대입
int number = 3;
System.out.println(String.format("I eat %d apples.", number));  // "I eat 3 apples." 출력

// 값 2개 이상 대입
int number = 10;
String day = "three";
System.out.println(String.format("I ate %d apples. so I was sick for %s days.", number, day));

// %% 사용법
System.out.println(String.format("Error is %d%%.", 98));  // "Error is 98%." 출력

응용

코드 사용법
%10s 정렬과 공백 표현
%.4f 소수점 표현
// 정렬과 공백
System.out.println(String.format("%10s", "hi"));  // "        hi" 출력

// 소수점 표현
System.out.println(String.format("%.4f", 3.42134234));  // 3.4213 출력

System.out.printf

포매팅된 문자열을 출력할 때 System.out.println으로 출력을 했는데 System.out.printf메서드를 사용하면 String.format 메서드 없이 출력이 가능하다.

System.out.printf("I eat %d apples.", 3);  // "I eat 3 apples." 출력

5. String Buffer

문자열을 추가하거나 변경할 때 주로 사용하는 자료형

메서드 설명
append 문자열을 추가
insert 특정 위치에 원하는 문자열 삽입
substring 시작위치에서 끝 위치까지의 문자를 뽑아줌
// append
StringBuffer sb = new StringBuffer();  // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("nayoung");
String result = sb.toString();
System.out.println(result);  // "hello nayoung" 출력

// insert
StringBuffer sb = new StringBuffer();
sb.append("nayoung");
sb.insert(0, "hello ");
System.out.println(sb.toString()); // hello nayoung

// substring
StringBuffer sb = new StringBuffer();
sb.append("Hello!");
System.out.println(sb.substring(0, 4)); //Hell

6. 배열

집합을 표현하기 위하여 배열은 자료형 바로 옆에 [] 기호를 붙인다.

int[] odds = {1,3,5};

String[] weekend = {"월","화","수","목","금"};

1) 배열 길이 설정

배열의 길이를 먼저 설정한 뒤, 배열 변수를 생성하고 그 값을 나중에 대입한다.

String[] weeks = new String[7];
weeks[0] = "월";
weeks[1] = "화";
weeks[2] = "수";
weeks[3] = "목";
weeks[4] = "금";
weeks[5] = "토";
weeks[6] = "일";

2) 배열값에 접근하기

인덱스를 이용하여 값에 접근한다.

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
System.out.println(weeks[3]); // 목

3) 배열의 길이 구하기

.length를 활용하여 길이를 구한다

// 배열 길이 구할 때
String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
System.out.println(weeks.length); // 7

// 문자열 길이 구할 때
String word = "hello";
System.out.println(word.length()); // 출력: 5

7. 리스트 (List)

리스트와 배열은 비슷하지만 큰 차이점은
리스트는 크기가 변한다.
배열은 크기가 정해져있다.


1) ArrayList

메서드명 설명
add 요솟값을 추가
get 특정 인덱스의 값을 추출
size 요소의 개수를 리턴
contains 리스트 안에 해당 항목이 있는지 판별해 그 결과를 boolean으로 리턴
remove(객체) 리스트에서 객체에 해당하는 항목을 삭제한 뒤, 결과로 true/false를 리턴
remove(인덱스) 인덱스에 해당하는 항목을 삭제한 뒤, 그 항목을 리턴
import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList pitches = new ArrayList();

        // add
        pitches.add("138");
        pitches.add("129");
        pitches.add("142");

        // get
        System.out.println(pitches.get(1)); // 129
    }
}

// size
System.out.println(pitches.size()); // 3

// contains
System.out.println(pitches.contains("142")); // true

// remove(객체)
System.out.println(pitches.remove("129"));  // 129를 리스트에서 삭제하고, true를 리턴한다.

//remove(인덱스)
System.out.println(pitches.remove(0));  // pitches의 첫 번째 항목이 138이므로, 138을 삭제한 뒤 138을 리턴한다.

2) 제네릭스

ArrayList에 담을 수 있는 자료형을 설정해주어 좀 더 명확하게 체크해준다.

ArrayList<String> pitches = new ArrayList<>();
pitches.add("138");
pitches.add("129");

String one = pitches.get(0);  // 형 변환이 필요없다.
String two = pitches.get(1);  // 형 변환이 필요없다.

3) 다양한 방법으로 ArrayList 만들기

import java.util.ArrayList;
import java.util.Arrays;

public class Sample {
    public static void main(String[] args) {
        String[] data = {"138", "129", "142"};  // 이미 투구수 데이터 배열이 있다.
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data)); // 이미 존재하는 문자열 배열로 제작이 가능하다
        System.out.println(pitches);  // [138, 129, 142] 출력

        // 초기에 생성할 수도 있다
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
    }
}


4) String.join

ArrayList의 각 요소를 콤마로 구분해서 1개의 문자열로 만들려면?
String.join("구분자", 리스트 객체) 를 이용

import java.util.ArrayList;
import java.util.Arrays;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        String result = String.join(",", pitches);
        System.out.println(result);  // 138,129,142 출력
    }
}

5) 리스트 정렬하기 (sort)

  • 오름차순(순방향) 정렬 - Comparator.naturalOrder()
  • 내림차순(역방향) 정렬 - Comparator.reverseOrder()
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        pitches.sort(Comparator.naturalOrder());  // 오름차순으로 정렬
        System.out.println(pitches);  // [129, 138, 142] 출력
    }
}


8. 맵 (Map)

대응관계를 쉽게 표현할 수 있게 해주는 자료형
맵 자료형 중 가장 기본인 HashMap에 대해 알아볼 것이다.
맵은 키(key)와 값(value)을 한 쌍으로 갖는 자료형이다.

1) HashMap

메서드명 설명
put key와 value를 추가
get key에 해당하는 value를 얻을 때 사용
containsKey 맵에 해당하는 key가 있는지를 참/거짓으로 리턴
remove 맵의 항목을 삭제하는 메서드. 해당 key의 항목을 삭제한 후 value 값을 리턴
size 맵 요소의 개수를 리턴
keySet 맵의 모든 key를 모아 리턴
import java.util.HashMap;

public class Sample {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();

        // put
        map.put("people", "사람");
        map.put("baseball", "야구");

        // get
        System.out.println(map.get("people")); // "사람" 출력

        // containsKey
        System.out.println(map.containsKey("people")); // true 출력

        // remove
        System.out.println(map.remove("people"));  // "사람" 출력

        // size
        System.out.println(map.size()); // 1

        // keySet
        System.out.println(map.keySet()); // [baseball]
    }
}


9. 집합 (set)

집합과 관련된 것을 쉽게 처리하기 위해 만든 것
HashSet, TreeSet, LinkedHashSet 등이 있는데 그 중 가장 많이 사용하는 HashSet을 알아보자.

import java.util.Arrays;
import java.util.HashSet;

public class Sample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>(Arrays.asList("H", "e", "l", "l", "o"));
        System.out.println(set);  //  [e, H, l, o] 출력
    }
}

1) 집합 자료형의 2가지 특징

  • 중복을 허용하지 않는다.
  • 순서가 없다.

2) 교집합, 합집합, 차집합 구하기

public class Sample {
    public static void main(String[] args) {
        HashSet<Integer> s1 = new HashMap<>(Arrays.asList(1, 2, 3, 4, 5,6));
        HashSet<Integer> s2 = new HashMap<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        // 교집합
        HashSet<Integer> intersection = new HashSet<>(s1);  // s1으로 intersection 생성
        intersection.retainAll(s2);  // 교집합 수행
        System.out.println(intersection);  // [4, 5, 6] 출력

        // 합집합
        HashSet<Integer> union = new HashSet<>(s1);  // s1으로 union 생성
        union.addAll(s2); // 합집합 수행
        System.out.println(union);  // [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력

        // 차집합
        HashSet<Integer> substract = new HashSet<>(s1);  // s1으로 substract 생성
        substract.removeAll(s2); // 차집합 수행
        System.out.println(substract);  // [1, 2, 3] 출력
    }
}
집합 메서드명 설명
교집합 retainAll 두 집합의 교집합을 구한다
합집합 addAll 두 집합의 합집합을 구한다
차집합 removeAll 두 집합의 차집합을 구한다

10. 상수 집합 (enum)

public class Sample {
    enum CoffeeType {
        AMERICANO,
        ICE_AMERICANO,
        CAFE_LATTE
    };

    public static void main(String[] args) {
        System.out.println(CoffeeType.AMERICANO);  // AMERICANO 출력
        System.out.println(CoffeeType.ICE_AMERICANO);  // ICE_AMERICANO 출력
        System.out.println(CoffeeType.CAFE_LATTE);  // CAFE_LATTE 출력
    }
}

11. 형 변환과 final

형 변환은 자료형을 다른 자료형으로 바꾸는 것

1) 형 변환

변환 방향 메서드 또는 형식 설명
문자열 → 기본형 원하는타입.parseXXX("문자열") 문자열을 int, double 등으로 변환
예: Integer.parseInt("123")
기본형 → 문자열 String.valueOf(값) 또는 원래타입.toString(값) 숫자, boolean 등을 문자열로 변환
예: String.valueOf(123) or Integer.toString(123)
기본형 간 변환 (타입)값 명시적 형 변환 (casting)
예: (int) 3.14, (double) 10
참조형 간 변환 (상속관계) (클래스타입) 참조변수 부모 → 자식 등 형변환
예: (String) obj (단, 실제 타입이 맞아야 함)
// 문자열 → int
int a = Integer.parseInt("123");

// int → 문자열
String s1 = String.valueOf(123);
String s2 = Integer.toString(123);

// double → int (소수 버림)
double d = 3.14;
int b = (int) d;

// Object → String (참조형 캐스팅)
Object obj = "hello";
String s3 = (String) obj;

2) final

자료형에 값을 단 한 번만 설정할 수 있게 강제하는 키워드
값을 한 번 설정하면 그 값을 다시 설정할 수 없다.
그러므로 프로그램을 수행하면서 그 값이 절대 바뀌면 안 될 때 사용한다.

public class Sample {
    public static void main(String[] args) {
        final int n = 123;  // final로 설정하면 값을 바꿀 수 없다.
        n = 456;  // 컴파일 오류 발생
    }
}
728x90

'Java' 카테고리의 다른 글

[Java] 자바의 기초 - 제어문  (1) 2025.05.19