Java 기초 문법과 핵 개념 정리

Java의 설계 목표

  • 단순성
  • 객체 지향
  • 분산 환경 지원
  • 강건성
  • 보안성
  • 아키텍처 중립
  • 높은 이식성
  • 바이트코드 해석 실행
  • 른 실행 성능
  • 멀티스레드
  • 동적 성질

번째 Java 프로그램

public class Intro {
    public static void main(String[] args) {
        System.out.println("Java 기초 학습 시작");
    }
}

프로그램 구성 요소:

  • public: 접근 제어자로, 외부에서 접근할 수 있음을 나타낸다.
  • class: 에 오는 이름이 클래스 이름이다.
  • 클래스명은 public으로 선언되면 파일명과 동일해야 하며, .java 확장자를 사용한다.

소스 파일과 바이트코드

Java 코드는 .java 파일로 작성된다. 컴파일 후에는 .class 파일, 즉 바이트코드가 생성되며, JVM에서 실행된다. JVM은 동일한 바이트코드를 서로 다른 운영체제에서 실행할 수 있게 하므로 Java는 플랫폼 독립성을 갖는다.

기본 데이터 타입과 래퍼 클래스

Java의 기본형은 네 가지 범주로 구분된다.

  • 정수형
  • 부동소수점형
  • 문자형
  • 논리형
타입바이트 수
byte1
short2
int4
long8
float4
double8
char2
booleanJV

각 기본형에는 대응하는 래퍼 클래스가 있다.

  • Byte, Short, Integer, Long
  • Float, Double
  • Character
  • Boolean

int는 기본형이고 Integer는 참조형 래퍼 클래스이다. int의 기본값은 0, Integer의 기본값은 null이다. 래퍼 클래스는 기본형과 문자열 간 변환에 유용하다.

Integer boxed = 100;
int primitive = boxed.intValue();
int parsed = Integer.parseInt("42");

final 워드

  • 클래스: final 클래스는 상속할 수 없다.
  • 메서드: final 메서드는 하위 클래스에서 오버라이딩할 수 없다.
  • 변수: final 변수는 한 번 초기화되면 값을 변경할 수 없다. 기본형은 값이 고정되고, 참조형은 객체 참조를 바꿀 수 없다.

수학 함수와 상수

Math 클래스는 다양한 산술 연산을 제공한다.

표현의미
Math.sqrt(x)제곱근
Math.abs(x)절대값
Math.pow(a, b)a의 b제곱
Math.PI원주율

비트 연산자

  • &: AND
  • |: OR
  • ^: XOR
  • ~: NOT
  • <<: 왼쪽 시프트
  • >>: 오른쪽 시프트

String 클래스

String은 불변 객체이다. 한 번 생성된 문자열은 변경되지 않으며, 변경 메서드를 호출하면 새로운 객체가 생성된다.

메서드설명
charAt(i)지정 인덱스의 문자 반환
compareTo(other)사전 비교
isEmpty()빈 문자열 여부
indexOf(str)부분 문자열의 첫 위치
substring(a, b)범위 추출
toLowerCase()소문자 변환
toUpperCase()대문자 변환

Java는 문자열 리터럴을 효율적으로 관리하기 위해 상수 풀을 사용한다. 클래스 로딩 시 .class에 있는 정적 상수 풀 정보가 JVM 메모리의 실행 상수 풀에 적재된다.

입력과 출력

표준 출력은 System.out을 사용한다.

System.out.println("출력 예제");

표준 입력은 java.util.Scanner를 활용한다.

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
int age = sc.nextInt();

패키지

패키지는 클래스를 조직화하고 이름 충돌을 방지하는 단위이다. 패키지명은 일반적으로 도메인을 역순으로 작성한다. 클래스 사용 시 import 문으로 가져올 수 있다.

import java.util.Scanner;
import java.util.*;

package 선언은 소스 파일 맨 위에 위치해야 한다.

for 문

첫 번째는 인덱스 기반 반복이다.

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

두 번째는 향상된 for 문으로, 배열이나 Iterable을 순회할 때 사용한다.

int[] values = {1, 2, 3};
for (int v : values) {
    System.out.println(v);
}

이스케이프 시퀀스

문자의미유니코드
\b백스페이스\u0008
\t\u0009
\n개행\u000a
\r캐리지 리턴\u000d
\"큰따옴표\u0022
\'작은따옴표\u0027
\\역슬래시\u005c

용어 정리

  • 코드 포인트: 문자에 할당된 유니코드 값
  • 코드 유: 실제 인코딩에서 사용하는 최소 단위

태그: java JVM Wrapper-Class final String

9월 10일 21:23에 게시됨