내코가석자

01. 필수 문법

gani00 2026. 3. 7. 23:56

Java 코딩 테스트 필수 문법 정리

1. Primitive Type vs Reference Type

Primitive Type (기본 타입)

값 자체를 저장하는 타입

대표적인 타입

  • int
  • long
  • float
  • double
  • boolean
  • char

특징

  • 값 자체를 저장
  • 연산 속도가 빠름
  • null을 가질 수 없음
// primitive type
int a = 0;
long[] longs = new long[10];
float f = 10.5f;
double d = 10 / 3.0;
 

Reference Type (참조 타입)

객체의 메모리 주소를 저장하는 타입

대표적인 타입

  • Integer
  • Long
  • Float
  • Double
  • String
  • ArrayList
  • HashMap

특징

  • 객체의 주소를 참조
  • null 가능
  • Primitive보다 연산 속도가 느릴 수 있음
 
ArrayList<Integer> arrayList = new ArrayList<>();
Stack<Long> stack = new Stack<>();
Queue<Float> queue = new ArrayDeque<>();
ArrayDeque<Double> arrayDeque = new ArrayDeque<>();
 

2. 컬렉션 (Collection Framework)

컬렉션 프레임워크는 여러 개의 데이터를 저장하고 관리하기 위한 클래스들의 집합

코딩 테스트에서 자주 사용하는 컬렉션

  • ArrayList
  • Stack
  • Queue
  • ArrayDeque
  • HashMap

3. 배열 vs 리스트

배열 (Array)

특징

  • 크기 고정
  • 특정 인덱스 접근 O(1)
  • 삽입 / 삭제 불가능
  • 값 변경만 가능
int[] arr = new int[10];
arr[0] = 5;
 

리스트 (ArrayList)

특징

  • 가변 길이
  • 삽입 / 삭제 가능
  • 내부적으로 배열 기반
  • 데이터 삽입 시 평균 O(N)
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
 

배열 vs 리스트 비교


구분 배열 리스트
크기 고정 가변
접근 속도 O(1) O(1)
삽입/삭제 불가능 가능

4. HashMap

HashMap은 key - value 쌍을 저장하는 자료구조

해시 테이블 기반으로 구현됨

특징

  • 키를 통해 빠르게 값 검색
  • 평균 시간복잡도 O(1)
  • 순서 보장하지 않음

주요 메서드

put(key,value) 데이터 저장
get(key) 값 조회
containsKey(key) key 존재 여부 확인
remove(key) 삭제

사용 예시

// HashMap 초기화
HashMap<String, Integer> map = new HashMap<>();

// 값 삽입
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);

// key 존재 여부
map.containsKey("a"); // true

// 값 조회
map.get("a"); // 1

// 값 수정
map.put("b", 4);

// 삭제
map.remove("a");
 
 

5. 문자열 (String)

String은 Immutable 객체

즉, 한 번 생성된 문자열은 변경할 수 없음 문자열을 변경하면 새로운 객체가 생성됨


문자열 예시

 
String str = "Hi";

str = "He";
str += "llo";

System.out.println(str); // Hello

문자열 수정


str = str.replace("H", "h");
 

6. StringBuilder vs StringBuffer

문자열을 mutable(변경 가능) 하게 관리하는 클래스

문자열 수정이 많을 때 String보다 효율적


차이점

StringBuffer Thread-Safe (멀티스레드 안전)
StringBuilder Thread-Safe 아님 (더 빠름)

코딩 테스트에서는 대부분

StringBuilder 사용


사용 예시

StringBuilder sb = new StringBuilder();

sb.append(10); // "10"
sb.append("aaa"); // "10aaa"

System.out.println(sb); // 10aaa

sb.deleteCharAt(3); // "10aa"

sb.insert(1, 2); // "120aa"

System.out.println(sb);

참고
- append(10)은 int지만 메서드 오버로딩 때문에 문자열로 처리됨


7. 람다식 (Lambda Expression)

람다식은 메서드를 하나의 식(Expression) 형태로 표현하는 방식

익명 함수(Anonymous Function)

// 기존 방식
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
};


// 람다식
Runnable r2 = () -> System.out.println("Hello");
 
 

특징

  • 함수형 인터페이스에서만 사용 가능
  • 코드가 간결해짐
  • 함수를 값처럼 전달 가능

자주 사용하는 곳

// 반복
list.forEach(x -> System.out.println(x));

// 정렬
Collections.sort(list, (a,b) -> a-b);

// Stream
list.stream()
.filter(x -> x > 10)
.map(x -> x * 2)
.forEach(System.out::println);
 

8. 구현 노하우

조기 반환 (Early Return)

조건을 만족하면 즉시 return → 불필요한 중첩 if 제거

public int divide(int a, int b) {
if (b == 0) {
return -1;
}
return a / b;
}

 


보호 구문 (Guard Clause)

잘못된 입력을 먼저 검사

 
public void printName(String name) {
if (name == null) {
throw new IllegalArgumentException("name cannot be null");
}

System.out.println(name);
}

9. 제네릭 (Generic)

타입을 미리 지정하지 않고 사용 시 결정

타입 안정성 제공

 
List<String> list = new ArrayList<>();

list.add("apple");
// list.add(10); // 컴파일 에러

String value = list.get(0);

10. Stream API

컬렉션 데이터를 선언형 방식으로 처리하는 API

특징 > 코드 간결

  • 데이터 필터링
  • 데이터 변환
  • 데이터 정렬
  • 데이터 집계

예시

 
List<Integer> list = Arrays.asList(1,2,3,4,5);

// Stream 사용
List<Integer> result = list.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * 2)
.collect(Collectors.toList());

System.out.println(result); // [4, 8]
 

자주 사용하는 메서드

메서드설명
filter() 조건 필터링
map() 데이터 변환
sorted() 정렬
forEach() 반복
collect() 결과 수집

Stream 기본 구조

데이터 생성 → 가공 → 결과
 
 
 
list.stream()
.mapToInt(Integer::intValue)
.toArray();

정리

코딩 테스트에서 중요한 Java 문법

  • Primitive vs Reference
  • 배열 vs ArrayList
  • HashMap
  • String / StringBuilder
  • Lambda
  • Generic
  • Stream

 

'내코가석자' 카테고리의 다른 글

02-3. 모의고사 (프로그래머스, JAVA)  (0) 2026.03.11
02-2. 두 개 뽑아서 더하기 (프로그래머스, JAVA)  (0) 2026.03.11
02-1. 배열 몸풀기 문제  (0) 2026.03.11
02. 배열  (0) 2026.03.07
00. 코딩 테스트 준비  (0) 2026.03.07