2 min to read
자바공부 -변수/타입/메서드/배열
1. 자바 란 무엇일까
java는 node.js와 달리 컴파일이 필요하다
node.js: 코드를 쓰면 V8엔진이 그 자리에서 읽고 실행하기 떄문에 오류나 타입오류가 런타임에서 터짐
java: 코드를 먼저 javaC로 컴파일 -> 오류가 있으면 실행 자체가 안됨
바이트코드를 쓰는 이유는 자바 코드를 한번 컴파일 하면 어느 운영체제든 똑같이 실행됨(jvm에서 실행됨)
jvm: 자바가상머신으로 각 os위에서 바이트 코드를 실행시켜주는 통역사 역할 ldk: JAVAc + jvm + 기본 라이브러리 JRE: JVM+ 라이브러리(배포 할때 사용)
2. 기본 java 코드 한줄씩 이해 하기
자바는 모든 코드가 반드시 클래스 안에 있어야 한다
public: 어디서나 접근 가능 class 선언은 public으로 함, 파일명과 클래스 명이 반드시 일치해야함
main메서드: 프로그램의 시작점, JVM이 이 메서드를 가장 먼저 호출함
tring[] args: 터미널에서 프로그램 실행할 때 전달하는 인자 (Node의 process.argv와 동일)
접근제어자
클래스의 필드나 메서드에 누가 접근할 수 있는지 제한하는 키워드
접근제어자가 ㅊ없으면 모든 필드가 외부에서 접근이 가능하며 아무 코드가 값을 바꿀 수 있다
누가 언제 바꿨는지도 추적도 할 수 없다
// ── Node.js
──────────────────────────
console.log('Hello World');
const name = '소이';
const age = 25;
console.log(`이름: ${name}, 나이: ${age}`);
// 파일명: index.js
// 실행: node index.js
// ── Java ───────────────────
─────────
// 파일명: Hello.java (클래스명과 일치 필수)
public class Hello { // 클래스 선언
// main: 프로그램 진입점
public static void main(String[] args) {
System.out.println("Hello World"); // console.log
String name = "소이"; // 타입 명시 필수
int age = 25; // int = 정수 타입
// 템플릿 리터럴 대신 printf 또는 formatted
System.out.printf("이름: %s, 나이: %d%n", name,
age);
// Java 15+ : "이름: %s".formatted(name)
}
}
// 빌드: javac Hello.java → Hello.class 생성
// 실행: java Hello
2. 변수와 타입
node.js는 동적타입으로써 변수에 뭐든 넣을 수 있다 편리하지만 실수해도 실행 전에는 알 수 없다
java는 선언할때 타입을 못받아놔서 다른 타입을 넣으면 컴파일 오류가 난다 -> 버그를 미리 잡을 수 있다
기본 타입 정리
| 타입 | 크기 | 범위/특징 | 실무 사용 | Node 대응 | 주의사항 |
|——|——|———–|———–|———–|———-|
| byte | 1바이트 | -128 ~ 127 | 이미지/파일 바이너리 | number | 거의 직접 안 씀 |
| short | 2바이트 | -32,768 ~ 32,767 | 거의 안 씀 | number | 레거시 코드에만 등장 |
| int | 4바이트 | 약 ±21억 | 기본 정수 — 나이, 수량 | number (정수) | ★ 정수는 기본적으로 int |
| long | 8바이트 | 약 ±922경 | DB ID, 타임스탬프 | BigInt | 숫자 뒤 L 필수: 1000L |
| float | 4바이트 | 소수 약 7자리 | 거의 안 씀 (double 선호) | number | 숫자 뒤 f 필수: 3.14f |
| double | 8바이트 | 소수 약 15자리 | 기본 실수 — 금액, 좌표 | number (실수) | ★ 실수는 기본적으로 double |
| boolean | 1바이트 | true 또는 false | 조건 플래그 | boolean | 1/0 안 됨. true/false만 |
| char | 2바이트 | 유니코드 문자 하나 | 문자 하나 | string[0] | 작은따옴표: 'A' (큰따옴표 아님) |
Comments