[Java] 기초 - Hello World, 입출력, 변수

이지연·2025년 12월 8일

개요

아래의 내용은 java_grammer 레파지토리 C01Basic 디렉터리에 저장되어있는 내용을 정리하였다.


C00HelloWorld.java

package C01Basic;

// 클래스의 명명 규칙
// 1) 반드시 public class명과 파일명이 일치해야 함
// 2) 일반적으로 대문자 알파벳으로 시작
public class C00HelloWorld {
    // main : 프로그램 실행의 시작점(가장 먼저 실행되는 메서드)
    public static void main(String[] args) {
        // println : 콘솔에 한 줄 출력 (단축키: sout + tab)
        System.out.println("hello world"); // 명령문 끝엔 세미콜론(;) 필수

        // 메서드 호출 예시
        System.out.println(method2());

        // 주석 사용법
        // 한 줄 주석 : //
        /*
         여러 줄 주석 : /* ~ */
        */
    }

    // 리턴값이 있는 메서드 예시
    public static int method2(){
        return 10;
    }
}

핵심 포인트:

  • 클래스명 = 파일명 (대문자 시작)
  • main() 메서드가 실행 시작점
  • System.out.println()으로 출력

C01InputOutput.java

입출력(IO)은 자바 기본 중 기본. Scanner, BufferedReader 두 가지 방법 다룸.

package C01Basic;

import java.io.*;
import java.util.*;

public class C01InputOutput {
    public static void main(String[] args) throws IOException {
        
        // 1️⃣ 기본 출력
        System.out.println(20);        // 줄바꿈 있음
        System.out.print("hello ");    // 줄바꿈 없음
        System.out.print("world\n");   // \n으로 수동 줄바꿈

        // 2️⃣ Scanner 입력 (간단한 입력용)
        Scanner sc = new Scanner(System.in);
        String input1 = sc.nextLine();     // 문자열 한 줄
        int input2 = sc.nextInt();         // 정수
        sc.close();

        // 3️⃣ BufferedReader + StringTokenizer (빠른 입력용)
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();      // "abc bcd efg" 입력
        StringTokenizer st = new StringTokenizer(input);
        
        System.out.println(st.nextToken()); // abc
        System.out.println(st.nextToken()); // bcd
        System.out.println(st.nextToken()); // efg
        br.close();
    }
}

언제 뭘 쓸까?

  • Scanner: 소규모 입력, 초보자용
  • BufferedReader: 대량 입력, 성능 중요할 때

C02Variable.java

변수, 자료형, 형변환까지 완전 정리.

package C01Basic;

import java.math.BigDecimal;

public class C02Variable {
    public static void main(String[] args) {
        
        /* 1️⃣ 변수 명명규칙 */
        String myFirstName = "leejiyean";  // camelCase
        String my_first_name = "leejiyean"; // underscore
        
        /* 2️⃣ 정수형 */
        byte a = 127;  // -128 ~ 127
        byte b = -128;
        a++;  // 오버플로우: -128
        b--;  // 언더플로우: 127
        
        long l1 = 10;
        long l2 = 20L;  // L 붙여서 long 명시
        
        /* 3️⃣ 실수형 + 부동소수점 오차 */
        double total = 0;
        for(int i = 0; i < 1000; i++) {
            total += 0.1;  // 99.999... 오차 발생!
        }
        System.out.println(total);
        
        // 해결법1: BigDecimal
        BigDecimal b1 = new BigDecimal("1.03");
        BigDecimal b2 = new BigDecimal("0.42");
        System.out.println(b1.subtract(b2));  // 정확함
        
        /* 4️⃣ 문자형 */
        char c1 = '가';      // 1글자
        String s1 = "가";    // 문자열
        
        String[] arr = new String[5];  // null로 초기화
        arr[1] = "hello";
        // arr[0].length();  // NullPointerException!
        
        /* 5️⃣ 형변환 */
        int i1 = 10;
        double d1 = i1;      // 자동 (작은→큰)
        double d2 = 10.5;
        int i2 = (int)d2;    // 명시 (큰→작은)
        
        // 소수점 계산 트릭
        System.out.println((double)1 / 4);  // 0.25
        
        // 변수와 상수
        // 변수: 재할당 가능, 재선언 불가능
        int a1 = 10;
        a1 = 20;
//        int a1 = 30; // 재선언 허용 X

        // 상수: 값의 재할당 불가능, 정해진 값(고정된 값) 사용 시 상수 활용
        final double PI = 3.141592;
//        PI = 3.15; // 재할당 허용 X
    }
}

자료형 요약표:

타입크기범위/특징
byte1바이트-128 ~ 127
int4바이트-21억 ~ 21억
long8바이트L 붙여서 사용
double8바이트부동소수점 오차 주의
char2바이트한 글자 '가'
profile
Eazy하게

1개의 댓글

comment-user-thumbnail
2025년 12월 11일

메서드 포테이토 가 생각나고 맛있네요

답글 달기