변수 시작
public class Var1 {
public static void main(String[] args) {
System.out.println(10);
System.out.println(20);
System.out.println(30);
}
}
package
자바 파일을 구분하기 위한 폴더
10을 20으로 변경하면 20이 출력.
변수란?
값을 보관해두고, 필요할때 값을 꺼내서 읽을 수 있는 저장소 필요. 데이터를 담을 그릇을 제공하는 곳. 변수는 이름 그대로 변할 수 있다는 뜻
public class Var2 {
public static void main(String[] args) {
int a;
a = 10;
System.out.println("a = " + a);
}
}
a의 값을 변경하려면 출력결과가 함께 변경
변수선언

int a
숫자형 정수 (Integer)을 보관할 수 있는 이름이 a라는 데이터 저장소
데이터 저장소를 변수라고 한다.
변수를 만드는 것을 변수 선언이라 한다.
변수 a애는 숫자 정수 보관 가능

자바에서 =은 오른쪽에 있는 값을 왼쪽에 저장
데이터 저장소인 변수 a에 값 10을 저장
변수에 처음으로 값을 대입해서 저장하는 것을 변수 초기화
변수 값 읽기

System.out.println("a = " + a);
변수에 저장되어 있는 값을 읽어서 사용하는 법은 변수 이름을 적어주면 됨
변수 a에 10이 들어가면 자바는 실행시점에 변수의 값을 읽어서 사용
변수 값 변경
public class Var3 {
public static void main(String[] args) {
int a;
a = 10;
System.out.println("a = " + a);
a = 50;
System.out.println("a = " + a);
}
}

변수 a가 처음에 10이었다가 50으로 변경 됨
변수 선언과 초기화
변수 선언
변수를 선언하면 컴퓨터 메모리 공간을 확보해서, 데이터 저장.
변수 이름을 통해서 해당 메모리 공간에 접근 가능
데이터를 보관할 수 있는 공간을 만들고, 이름을 부여
public class Var4 {
public static void main(String[] args) {
int a;
int b;
int c, d;
}
}
변수 초기화
public class Var5 {
public static void main(String[] args) {
int a;
a = 1;
System.out.println("a = " + a);
int b= 2;
System.out.println("b = " + b);
int c = 3, d = 4;
System.out.println("c = " + c);
System.out.println("d = " + d);
}
}
변수 선언과 초기화를 따로 할 수도 있고, 변수를 선언과 동시에 초기화 할 수도 있다.
왜 변수를 초기화 해야 하는가?
public class Var6 {
public static void main(String[] args) {
int a;
//System.out.println("a = " + a); -> 컴파일 에러 (아무 값도 없음)
}
}
Compile 부분 들어가면 아무 것도 안한다. 따라서 사용 안하기 때문에 최적화 된다.

초기화 하지 않은 변수는 컴파일 에러 발생
변수가 초기화 되지 않았기 때문.
왜 ERROR가 터진것 일까 ?
컴퓨터 메모리는 여러 system이 함께 사용하는 공간. 어떤 값들이 계속 저장
변수를 선언하면 메모리상의 어떤 공간을 차지 하고 사용. 그런데 그 공간에 기존에 어떤 값이 있었는지 아무도 모름.
초기화를 하지 않는다면 이상한 값 출력 가능성,
참고: 변수 중 지역변수(Local Variable), 개발자가 직접 초기화 해줘야 한다.
하지만 인스턴스 변수는 알아서 초기화
변수 타입
public class Var7 {
public static void main(String[] args) {
int a = 100;
double b = 10.5;
boolean c = true;
char d = 'A';
String e = "Hello";
System.out.println("e = " + e);
System.out.println("d = " + d);
System.out.println("c = " + c);
System.out.println("b = " + b);
System.out.println("a = " + a);
}
}
변수는 데이터를 다루는 종류에 따라 다양한 형식 존재. 이러한 형식을 영어로 (type)
int : 정수
double : 실수
boolean : true, false
char : 문자 하나 ''
String : 문자열 ""
참고) String만 왜 대문자?
String은 클래스 이기 때문이다.
리터럴
public class Var8 {
public static void main(String[] args) {
byte b = 127;
short s = 32767;
int i = 2147483647;
long l = 9223372036854775807L;
float f = 10.0f;
double d = 10.0;
}
}
리터럴이란?
고정된 값을 프로그래밍 용어로 리터럴이라고 한다.
리터럴은 개발자가 직접 입력한 고정된 값. 리터럴 자체는 변하지 않는다.
메모리를 적게 사용하면 작은 숫자를 표현. 메모리를 많이 사용하면 큰 숫자를 표현 할 수 있다. 변수를 선언하면 표현 범위에 따라 메모리 공간을 차지
정수형
-> byte : -128 ~ 127 (1byte, 2⁸)
-> short : -32,768 ~ 32,767 (2byte, 2¹⁶)
-> int : -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 2³²)
-> long : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (8byte, 2⁶⁴)
실수형
-> float : 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도 (4byte, 2³²)
-> double : 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 2⁶⁴)
기타
-> boolean : true , false (1byte)
-> char : 문자 하나(2byte)
-> String : 문자열을 표현한다. 메모리 사용량은 문자 길이에 따라 동적으로 달라진다. (특별한 타입이
다. 자세한 내용은 뒤에서 학습한다)
리터럴 타입 지정
정수 리터럴은 int를 기본으로 사용. 따라서 int 범위까지 표현 가능. 숫자가 int형 범위 20억을 넘어가면 L을 붙여서 Long을 사용
실수 리터럴은 기본이 double을 사용. float를 사용하면 f르 붙여서 float형으로 지정
연습문제
1.
public class Practice2 {
public static void main(String[] args) {
int num = 10;
int num1 = 20;
int sum = num + num1;
System.out.println("sum = " + sum);
}
}
public class Practice1 {
public static void main(String[] args) {
int a = 4;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
}
}
public class Practice3 {
public static void main(String[] args) {
long var1 = 10000000L;
System.out.println(var1);
boolean var2 = true;
System.out.println("var2 = " + var2);
}
}