Var1
package variable;
public class Var1 {
public static void main(String[] args){
System.out.println(10);
System.out.println(10);
System.out.println(10);
}
}
패키지(package)
실행 결과
10
10
10
사용자가 숫자를 입력하고, 출력하고 싶다면 어떻게 해야할까? 사용자가 입력한 값은 항상 변한다.
결국 어딘가에 값을 보관해두고 필요할 때 값을 꺼내서 읽을 수 있는 저장소가 필요하다.
쉽게 비유하자면 데이터를 담을 수 있는 그릇이 필요하다.
모든 프로그래밍 언어는 이런 문제를 해결하기 위해 변수라는 기능을 제공한다.
변수는 이름 그대로 변할 수 있다는 뜻이다.
Var2
package variable;
public class Var2 {
public static void main(String[] args) {
int a; //변수 선언(숫자를 담을수 있는 그릇)
a = 20; //변수 초기화
System.out.println(a);
System.out.println(a);
System.out.println(a);
}
}
a = 20 실행 결과
20
20
20
변수 선언
int a
변수에 값 대입
a = 10
=은 오른쪽에 있는 값을 왼쪽에 저장한다는 뜻이다.a에 값10을 저장한다.변수 값 읽기
System.out.println(a)
변수는 이름 그대로 변할 수 있는 수이다.
변수 a에 저장된 값을 언제든지 바꿀 수 있다.
Var3
package variable;
public class Var3 {
public static void main(String[] args) {
int a;//변수 선언
a = 10;//변수 초기화 a(10)
System.out.println(a);
a = 50; //변수 값 변경: a(10 -> 50)
System.out.println(a);
}
}
실행 결과
10
50
변수의 값이 변경된 이후에는 10 대신에 50이 출력
변수의 값을 변경하면 변수에 들어있던 기존 값은 삭제된다.
변수 선언
변수를 선언하면 컴퓨터의 메모리 공간을 확보해서 그곳에 데이터를 저장할 수 있다.
데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다.
Var4
package variable;
public class Var4 {
public static void main(String[] args) {
int a;
int b;
int c,d;
}
}
다음과 같이 한번에 여러 변수를 선언할 수도 있다.
int c,d;
변수 초기화
변수를 선언하고, 선언한 변수에 처음으로 값을 저장하는 것을 변수 초기화라고 한다.
Var5
package variable;
public class Var5 {
public static void main(String[] args) {
int a;
a = 1;
System.out.println(a);
int b = 2; //변수 선언과 초기화를 한번에
System.out.println(b);
int c = 3, d = 4; // 여러 변수 선언과 초기화를 한번에
System.out.println(c);
System.out.println(d);
}
}
여러 변수를 선언하면서 초기화도 동시에 진행 가능
변수는 초기화 해야한다
만약 변수를 초기화 하지 않고 사용한다면?
Var6
package variable;
public class Var6 {
public static void main(String[] args) {
int a;
//System.out.println(a); //주석을 풀면 컴파일 에러 발생
}
}
초기화 하지 않은 변수 읽기
다음과 같은 컴파일 에러가 발생한다.
java: variable a might not have been initialized
변수가 초기화되지 않았다는 오류이다.
참고 : 지금 학습하는 지역 변수는 개발자가 직접 초기화를 해주어야 한다.클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.
참고 : 컴파일 에러는 자바 문법에 맞지 않았을 때 발생하는 에러이다. 컴파일 에러는 오류를 빨리, 그리고 명확하게 찾을 수 있기 때문에 사실 좋은 에러이다.
변수는 데이터를 다루는 종류에 따라 다양한 형식이 존재한다.
Var7
package variable;
public class Var7 {
public static void main(String[] args) {
int a = 100;//정수
double b = 10.5;//실수
boolean c = true;//불리언 true,false 입력 가능
char d = 'A'; //문자 하나
String e = "Hello Java";//문자열, 문자열을 다루기 위한 특별한 타입
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
실행 결과
100
10.5
true
A
Hello Java
변수는 데이터를 다루는 종류에 따라 다양한 형식이 존재한다. 이러한 형식을 영어로는 타입이라 하고, 우리말로는 형식또는 형 이라 한다. 예로 int 타입,int 형식,int형 등으로 부른다.
참고 :
String은 첫 글자가 대문자로 시작하는 특별한 타입이다. 문자열을 다루는 특별한 타입이다.
자신의 타입에 맞는 데이터 사용
각 변수는 지정한 타입에 맞는 값을 사용해야 한다.
리터럴
코드에서 개발자가 직접 적은 100,10.5,true,A,Hello Java와 같은 고정된 값을 프로그래밍 용어로 리터럴이라 한다.
int a = 100;//정수 리터럴
double b = 10.5;//실수 리터럴
boolean c = true;//불리언 리터럴
char d = 'A'; //문자 하나 리터럴
String e = "Hello Java";//문자열 리터럴
리터럴 이라는 단어의 어원이 문자 또는 글자를 의미한다.
Var8
package variable;
public class Var8 {
public static void main(String[] args) {
//정수
byte b = 127; //-128~127
short s = 32767; // -32,768 ~ 32,767
int i = 2147483647; //-2,147,483,648 ~ 2,147,483,647 (약20억)
long l = 92222222222L;
//실수
float f =10.0f;
double d = 10.0;
}
}
메모리를 작게 사용하면 작은 숫자를 표현할 수 있고, 메모리를 많이 사용하면 큰 숫자를 표현할 수 있다.
변수와 메모리 공간 크기
리터럴 타입 지정
int을 사용한다.int범위인 약 20억을 넘어가면 L을 붙여서 정수 리터럴을 long으로 변경해야 한다. (소문자는 숫자1로 햇갈릴 수 있으므로 대문자를 붙이는 것을 권장)double형을 사용한다.변수 타입 정리
메모리 용량은 매우 저렴하다. 따라서 메모리 용량을 약간 절약하기 보다는 개발 속도나 효율에 초점을 맞추는 것이 더 효과적이다.
자주 사용하는 타입
실무에서 자주 사용하는 타입은 다음과 같다.
int,long : 자바는 정수에 기본적으로 int를 사용한다. 만약 20억이 넘을 것 같으면 long을 사용한다.byte를 사용한다.double : 실수는 고민하지 말고 double을 쓰자boolean : true,false 참 거짓을 표현한다. 조건문에서 자주 사용된다.String : 문자를 다룰 때는 문자 하나든 문자열이든 모두 String을 사용하는 것이 편리하다.자바에서 변수의 이름을 짓는데는 규칙과 관례가 있다.
규칙은 필수이다. 규칙을 지키지 않으면 컴파일 오류가 발생한다.
규칙
1num.1st)int,class,public)int,class,public)관례
orderDDetail,myAccount)낙타표기법
낙타표기법을 사용하면 이름에 공백을 넣지 않고도 여러 단어를 쉽게 구분할 수 있으므로, 변수의 이름을 이해하기 쉽게 만들어준다.
자바 언어의 관례 한번에 정리
USEER_LIMITorg.spring.boot변수 이름은 의미있고, 그 용도를 명확하게 설명해야 한다.
문제1
다음 코드에 반복해서 나오는 숫자 4,3을 다른 숫자로 한번에 변경할 수 있도록 다음을 변수 num1,num2를 사용하도록 변경해 보자.
VarEx1
package variable.ex;
public class VarEx1Question {
public static void main(String[] args) {
int num1 = 4;
int num2 = 3;
System.out.println(num1 + num2);
System.out.println(num1 - num2);
System.out.println(num1 * num2);
}
}
문제2
1.변수 num1을 선언하고, 이에 10을 할당하세요.
2.변수 num2를 선언하고, 이에 20을 할당하세요.
3.두 변수의 합을 구하고, 그 결과를 새로운 변수 sum에 저장하세요.
4.sum변수의 값을 출력하세요.
VarEx2
package variable.ex;
public class VarEx2 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int sum = num1 + num2;
System.out.println(sum);
}
}
실행 결과
30
문제3 - long,boolean 데이터 타입
long 타입의 변수를 선언하고,그 변수를 10으로 초기화한 후 출력하는 프로그램을 작성하자
boolean 타입의 변수를 선언하고, 그 변수를 true로 초기화한 후 출력하는 프로그램을 작성하자
VarEx3
package variable.ex;
public class VarEx3 {
public static void main(String[] args) {
long longVar = 10L;
System.out.println(longVar);
boolean booleanVar = true;
System.out.println(booleanVar);
}
}
실행 결과
10
true
오늘은 변수에 관한 정의와 어떻게 사용되고 주로 어떻게 활용되는지를 공부했다. 변수는 말 그대로 변할 수 있는 값으로 어딘가에 저장해두고 필요할 때 꺼내서 쓰는 것을 말한다.
그리고 다양한 변수 타입이 있지만 실무에서는 정수는 int,long 실수는 double 불린형 boolean 문자열 String이 주로 사용되니 위에 타입들을 많이 쳐보려고 노력했다.
그리고 요즘은 메모리 용량 값이 많이 저렴해졌다고 하니 그냥 큰용량에 숫자를 신경쓰지 않고 담는 방법을 사용하면 좋겠다고 생각했다. 마지막으로 낙타표기법을 이용하니 확실히 가독성이 좋다고 느껴졌다. 관례라고 하니 항상 유념해두어야 겠다.
출처