2강. 변수와 타입
- c++ 처럼 자바도 각 실행문마다 세미콜론(;)을 붙여야함
- 클래스 이름은 소스 파일명과 동일해야함 (대소문자도 구분)
public class Hello { }
- 바이트 코드 실행시 클래스 블록 내부에서 main() 메서드를 찾아서 실행함.
- main() = 프로그램의 entry point
public static void main(String[] args) {
System.out.println("Hello,Java")
}
- 자바에서의 주석

변수
- 값을 저장할 수 있는 메모리의 특정 번지에 붙여진 이름
- 변수를 통해 해당 메모리 번지에 하나의 값을 저장하고 읽을 수 있음
- 변수는 다양한 타입의 값 (정수, 실수 등) 저장할 수 있음
- 변수 선언 시 같은 타입이면 콤마 이용해 한꺼번에 선언 가능함
int x,y,z;
변수 명명 규칙
- 변수가 어떤 값을 저장하고 있는지 쉽게 알 수 있도록 의미있는 이름을 지어주어야함
- 변수 이름 길이는 프로그램 실행과는 무관하기 때문에 충분히 길어도 무방함
- 변수 이름은 영어로만 명명

예약어
- 예약어를 변수 이름으로 사용할 경우 컴파일 에러

로컬 변수 (Local Variable)
- 메소드 블록 내에서 선언된 변수
- 메소드 블록 내에서만 사용 가능, 메소드 실행 끝나면 자동 삭제
- 해당 중괄호 블록 내에서만 사용 가능
정수 타입
- 메모리 사용 크기와 저장되는 값의 허용 범위가 각기 다름.

리터럴(literal)
- 소스코드에서 프로그래머에 의해 직접 입력된 값
- 2진수, 8진수, 10진수, 16진수
char 타입
- 하나의 문자를 저장할 수 있는 타입
- 작은 따옴표로 감싼 문자 리터럴은 유니코드로 변환되어 저장됨
- char 타입은 정수 타입
- 따라서 10진수, 16진수 형태의 유니코드로도 저장 가능
char var1 = 'A' //유니코드:65
char var3 = '가' //유니코드:44032
char c = 65 //10진수
char c = 0x0041 //16진수
문자열 리터럴 string
- 문자열리터럴이란 큰따옴표로 감싼 문자
- 문자열 리터럴은 char 타입에 저장불가능
- 문자열을 String 클래스 타입 변수에 저장
String var1 = "A"
이스케이프 문자(escape)
- \ (역슬래시)
- 이스케이프 문자를 사용해서 특정 문자를 표현하거나 문자열의 출력을 제어할 수 있음

String str = "나는 \"자바\"를 좋아합니다";
System.out.prinln(str);
-> 나는 "자바"를 좋아합니다
String str = "번호\t이름\t나이";
-> 번호 이름 나이
실수 타입
- double 타입 변수에 저장
- 자바는 기본 실수 리터럴을 double 타입으로 함
- float 타입으로 저장하려는 경우 실수 리터럴 뒤 f 또는 F 붙여 float 타입 표시해야함
double var = 3.14;
float var = 3.14f; <-f없으면 컴파일 에러
논리 타입
- true 와 false 리터럴을 저장하는 타입
boolean stop = true;
boolean state = false;
타입 변환
- 값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우 자동 타입 변환 가능
- 큰 허용범위타입 = 작은 허용범위타입
- byte<short<int<long<float<double<

char charValue = 'A';
int intValue = charValue; //65가 저장됨
byte byteValue = 65;
char charValue = byteValue; //컴파일 에러
강제 타입 변환 (casting)
- 큰 허용범위타입을 작은 허용범위타입으로 강제로 나누어 한 조각만 저장(정보 소실을 무르입을 작은 허용범위타입으로 강제로 나누어 한 조각만 저장(정보 소실을 무릅쓰고)
- 작은 허범타 = (작은 허범타) 큰 허범타
int intValue = 65;
byte byteValue = (byte) intValue;
->"A" 출력
double doubleValue =3.14;
int intValue = (int) doubleValue;
-> 소수점 버리고 3만 저장
- 정수 연산 변수는 int 타입으로 선언하는 것이 효과적
- 피연산자 중 하나가 long 타입이면 다른 피연산자는 long 타입으로 자동 변환됨. 따라서 결과도 long 타입으로 적어야함.