아래의 내용은 java_grammer 레파지토리 C01Basic 디렉터리에 저장되어있는 내용을 정리하였다.
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()으로 출력
입출력(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: 대량 입력, 성능 중요할 때
변수, 자료형, 형변환까지 완전 정리.
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바이트 한 글자 '가'
메서드 포테이토 가 생각나고 맛있네요