변수는 값을 저장하는 메모리 공간에 붙이는 이름, 즉 식별자이다.
리터럴은 변수에 저장되는 값 그 자체를 의미한다.
자바에서 변수 선언 형태는 다음과 같다.
타입 변수명 = 리터럴
예시 코드:
int num = 100;
변수는 크게 클래스 변수와 지역 변수로 나뉜다.
클래스 변수
0으로 자동 초기화됨지역 변수
상수는 변하지 않는 값을 의미한다.
변수는 재할당이 가능하지만, 상수는 한 번 선언하면 값 변경이 불가능하다.
선언 방법은 final 키워드를 사용한다.
final int NUM = 50;
상수 네이밍 규칙:
네이밍 컨벤션은 개발자 간의 약속이다.
자바는 강형 언어로, 변수의 타입이 명확히 정해져 있다.
int, byte, short, charlong, float, doubleboolean자바의 연산자는 다음과 같이 나뉜다.
사칙연산과 나머지 연산 %를 포함한다.
int a = 10, b = 3;
System.out.println(a + b); // 13
System.out.println(a - b); // 7
System.out.println(a * b); // 30
System.out.println(a / b); // 3
System.out.println(a % b); // 1
값을 비교하여 true 또는 false를 반환한다.
int x = 5, y = 10;
System.out.println(x == y); // false
System.out.println(x != y); // true
System.out.println(x < y); // true
System.out.println(x > y); // false
System.out.println(x <= y); // true
System.out.println(x >= y); // false
boolean 값을 비교한다.
boolean a = true, b = false;
System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false
System.out.println(a ^ b); // true
System.out.println(a ^ true); // false
int c = 10, d = 8, e = 10, f = 3;
System.out.println((c > d++) && (e > f++));
System.out.println(d); // 9
System.out.println(f); // 4
System.out.println((c < d++) && (e > f++));
System.out.println(d); // 10
System.out.println(f); // 4
AND(&&)는 앞 조건이 false면 뒤 조건을 평가하지 않는다.
OR(||)는 앞 조건이 true면 뒤 조건을 평가하지 않는다.
int num = 10;
num += 5;
num -= 5;
num *= 2;
num /= 2;
num %= 3;
int i = 5;
System.out.println(++i); // 6 (전위)
System.out.println(i++); // 6 (후위)
System.out.println(i); // 7
byte b = 10;
int i = b;
long l = i;
float f = l;
double d = f;
double d = 3.14;
int i = (int) d; // 3
byte a = 10;
byte b = 20;
// byte result = a + b; // 컴파일 에러
int result = a + b;
JVM은 int를 기본 연산 단위로 사용한다.

String name = "홍길동";
int age = 22;
float pi = 3.141592f;
System.out.printf("이름: %s, 나이: %d\n", name, age);
System.out.printf("파이: %.2f\n", pi);
System.out.printf("파이: %.4f\n", pi);
int score = 100;
if (score > 100) {
System.out.printf("%d 점으로 A+입니다.", score);
}
if (score > 90) {
System.out.println("A");
} else if (score > 80) {
System.out.println("B");
} else {
System.out.println("불합격");
}
char gender = 'M';
if (score >= 80) {
if (gender == 'M') {
System.out.println("합격: 남학생");
} else {
System.out.println("합격: 여학생");
}
} else {
System.out.println("불합격");
}
int month = 7;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "겨울";
break;
case 3:
case 4:
case 5:
season = "봄";
break;
case 6:
case 7:
case 8:
season = "여름";
break;
case 9:
case 10:
case 11:
season = "가을";
break;
default:
season = "잘못된 월";
}
break를 빼먹으면 아래 case까지 전부 실행되므로 주의해야 한다.
long, float, double, boolean 타입은 사용할 수 없다.
int a = 30;
String result = (a > 40) ? "초과" : "미만";
System.out.println(result);
중첩도 가능하지만 가독성이 떨어질 수 있다.
System.out.println("첫번째줄\n두번째줄");
System.out.println("탭\t탭");
System.out.println("\"안녕하세요\"");
System.out.println("역슬래쉬\\");
\n 줄바꿈\t 탭\" 큰따옴표\\ 백슬래시String str = "1234";
int num1 = Integer.parseInt(str);
int num2 = Integer.valueOf(str);
parseInt → 기본형 반환valueOf → 참조형 반환자바를 본격적으로 배우기 시작했는데,
선행 학습 덕분에 아직까지는 크게 어렵지 않았다.
다만 자바 메모리 구조와 기본 구조는
다시 한 번 복습이 필요하다고 느꼈다.