본문 바로가기
코딩테스트/PCCP(Java)

[PCCP] Java - 기본문법

by cogito21_java 2025. 1. 24.
반응형

변수와 연산자

변수와 자료형

- 프리미티브 타입(Primitive Type): int, long, float, double

- 레퍼런스 타입(Reference Type): Integer, Long, Float, Double

- 레퍼런스 타입은 참조형 변수이기에 프리미티브 타입보다 연산속도가 느림

- 정수형: short, int, long

- 실수형: float, double

- 논리형: boolean

- 문자형: char

더보기

변수 선언

type varName = value;

변수 예시

더보기
int iVar = 10;
long lVar = 10;
float fVar = 10.0f;
double dVar = 10.0;

System.out.println(iVar);
System.out.println(lVar);
System.out.println(fVar);
System.out.println(dVar);

연산자

- 산술 연산자: 뎃셈, 뺄셈, 곱셈, 몫, 나머지

+) 부동소수점 데이터 처리시 앱실론(epsilon) 주의

+) 정수형 나눗셈은 소수점 버림

산술 연산자 예시(정수형)

더보기
System.out.println(9 + 5);
System.out.println(9 - 5);
System.out.println(9 * 5);
System.out.println(9 / 5);
System.out.println(9 % 5);

산술 연산자 예시(부동소수점형)

더보기
System.out.println(9.5 + 5.0);
System.out.println(9.5 - 5.0);
System.out.println(9.5 * 5.0);
System.out.println(9.5 / 5.0);
System.out.println(9.5 % 5.0); // 소수점 아래 값 주의

- 비교 연산자: 같다, 같지 않다, 크다, 크거나 같다, 작다, 작거나 같다

+) 부동소수점 데이터 처리시 앱실론(epsilon) 주의. Math.abs()로 처리

비교 연산자 예시

더보기
System.out.println(5 == 0);
System.out.println(5 != 0);
System.out.println(5 < 0);
System.out.println(5 <= 0);
System.out.println(5 > 0);
System.out.println(5 >= 0);

- 논리 연산자: and(&&), or(||), not(!)

논리 연산자 예시

더보기
System.out.println(true && true);
System.out.println(false || true);
System.out.println(!false);

- 비트 연산자: and(&), or(|), xor(^), not(~), left shift(<<), right shift(>>)

비트 연산자 예시

더보기
System.out.println(8 & 12);
System.out.println(8 | 12);
System.out.println(8 ^ 12);
System.out.println(~12);
System.out.println(8 << 1);
System.out.println(8 >> 1);

배열

- 배열(array): 같은 타입의 데이터들의 모음. 크기가 고정되어 있음

- index를 통한 값에 접근, 수정의 시간 복잡도는 O(1)

- Arrays.toString()으로 배열 요소를 쉽게 출력 가능

더보기

배열 선언

type[] varName = new type[count];
type[][] varName = new type[rows][columns];

배열 선언 및 초기화

type[] varName = {value1, ...};
type[] varName = new type[count]{value1, ...};

배열값 접근

varName[index];

배열 예시

더보기
Integer I = new Integer[5]; // 레퍼런스 타입 선언

for (int i = 0; i < I.length(); ++i) {
    I[i] = 0;
}

System.out.println(Arrays.toString(I));

컬렉션 프레임워크

- 컬렉션 프레임워크(Collections Framework): 여러 개의 값을 저장하고 효율적으로 처리해주는 표준화 클래스의 집합

- 컬렉션 프레임워크에는 ArrayList, Stack, Queue, ArrayDeque, HashMap이 있음

- 레퍼런스 타입만 사용 가능

- ArrayList: 가변 크기. 맨 뒤에 데이터 추가시 O(1). 삭제 혹은 중간 삽입시 O(N)

- HashMap: 키와 값의 쌍을 저장하는 해시 테이블로 구성. 키를 사용하여 값을 검색하는 자료구조

더보기

컬렉션 선언

CollectionName<ReferencType> dataArray = new CollectionName<>(); // 컬렉선 선언

ArrayList

ArrayList<ReferenceType> list = new ArrayList<>(); // 리스트 객체 생성

list.add(value); // 리스트 맨뒤에 값 추가

list.get(index); // 인덱스로 값 접근

HashMap

HashMap<ReferenceType, ReferenceType> map = new HashMap<>(); // 해시맵 객체 생성

map.put(key, value); // 해시맵에 값 추가 또는 수정

map.get(key); // key에 해당하는 값 반환

map.containsKey(key); // true, false로 키값 존재 확인

map.remove(key); // key에 해당하는 key, value 제거

String

- String: 문자들을 배열의 형태로 구성한 immutable(값 변경 불가) 객체. 기존 객체 수정이 아닌 새로운 객체 반환

+) System.identityHashCode(변수): 객체를 특정할 수 있는 식별값 반환

- StringBuffer와 String Builder는 mutable(값 변경 가능). 두 클래스의 차이는 멀티스레드 환경에서 Thread-Safe 여부 차이

- StringBuillder는 Thread-Safe가 없어 조금 더 빠름

더보기

String

String str = "value1";

str += "value2"; // 새로운 문자열을 만들고 참조

str.replace(변경할 값, 변경될 값); // 해당 문자를 모두 수정

StringBuffer와 StringBuilder

StringBuilder sb = new StringBuilder();

sb.append(value); // 문자열 추가

sb.insert(index, value); // 해당 인텍스에 문자 추가

sb.deleteCharAt(index); // 해당 인덱스 문자 삭제

Method

- 메서드: 클래스 내부에 정의한 함수

- 람다식(lambda expression): Java1.8에서 추가. 익명함수(anonymous function)이라고 함. 코드에서 한 번만 실행 혹은 함수를 다름 함수의 인자로 전달할 때 사용

더보기

메서드 정의

public type methondName(type param1, ...) {
    실행할 코드;
    return value;
}

메서드 호출

type varName = methodName(arg1, ...);

람다식 정의

(param1, ...) -> 반환값;

(param1, ...) -> { 
    실행될 코드;
    return value;
}

기타 주의 사항

- 조기 반환(early return): 코드 실행 과정이 함수 끝까지 도달하기 전에 반환하는 방법. 예외 처리시 사용

- 보호 구문(guard clauses): 로직을 진행하기 전 예외코드를 추가하는 방법. 초기에 유효성 검사

- 제네릭(generic)은 빌드 레벨에서 타입을 체크하여 타입 안전성을 제공. 타입 체크와 형변환을 생략

- 제네릭으로 타입을 강제하여 실수를 방지

 

Time Check

더보기

시간 측정

long start = System.currentTimeMillis();
// 실행될 코드
long end = System.currentTimeMillis();

System.out.println(((end - start) / 1000.0) + "초");

 

 

 

 

반응형

'코딩테스트 > PCCP(Java)' 카테고리의 다른 글

[PCCP] Java - 자료구조  (2) 2025.01.24