0.
중요한 프로그래밍 능력 중 하나는 값(data)을 잘 다루는 것이다.
프로그래밍 언어에서 "변수"란, 값을 저장할 수 있는 메모리 공간을 의미한다.
단 하나의 값만 변수에 저장될 수 있으며, 변수에 다른 값을 저장하면, 변수는 다른 값 만을 저장하게 된다.
메모리란 RAM 을 의미하며, 논리적인 저장 공간을 의미한다. 하나의 저장공간의 기본단위는 1 byte 이며, 저장공간 하나 당 연속적인 숫자로 구분되어 있는데, 이 숫자를 "메모리 주소" 라고 한다.
메모리에 값(data)을 저장하거나 읽을 때는 메모리주소를 이용해야하지만, 연속적인 숫자이므로 사람이 기억하기가 어려워서 일정 공간에 "이름"을 주고 이름을 이용하여 메모리의 값을 읽거나 저장하는 것이 "변수"이다.
1. 변수 선언
- 변수를 선언하는 이유는 "값을 저장할 공간을 마련하기 위함"이다.
- 변수를 선언하는 것은 일정한 메모리 공간에 이름을 지어 구분하기 위해서이다.
- 자료형의 크기 만큼의 메모리공간이 변수 타입에 따라 할당되며, 해당 타입은 "이름"을 통해서 메모리에 값을 저장하고 불러들일 수 있게된다.
1.1 선언 방법
- 변수타입 변수이름;
// 변수타입 변수이름;
int age;
1.2 초기화
- 변수에 처음으로 값을 할당하는 행위를 "초기화"라고한다.
- 메모리는 컴퓨터 내부의 "공유자원"이기 때문에, 초기화하지 않을 시 다른 프로그램의 쓰레기 값이 저장되어 있을 수도 있다.
- 변수에 값을 할당할 때에는 =(대입연산자) 를 사용한다.
- 대입연산자의 의미는 "우항의 값을 좌항에 저장하라" 라는 의미를 가진다.
int age; // 변수선언 , 변수타입 변수이름;
age = 29; // = (대입연산자)로 변수에 값을 할당한다.
int age = 29; // 변수의 선언과 동시에 대입연산자로 초기화할 수 있다.
, (콤마) 를 사용하면 같은 타입의 변수를 한 줄에 선언할 수 있다.
int age, num;
int age = 29, num = 30; // 콤마로 구분하여 같은 타입의 변수를 한 줄에 초기화할 수 있다.
1.3 변수의 종류
- 클래스 변수
- 인스턴스 변수
- 로컬 변수
클래스, 인스턴스 변수는 초기화를 생략할 수 있으나, 로컬 변수는 반드시 초기화해야한다.
2. 변수의 값을 읽어오기
- 변수의 값을 읽어오기 위해서는 변수 이름으로 읽어오면 된다.
연산자 우선 순위 상 대입연산자는 마지막 순위이므로 덧셈 후 year 변수에 값이 할당된다.
int age = 28 , year = 0;
year = age + 1993; // 변수의 이름을 적는 것으로 메모리의 공간의 변수를 불러들일 수 있다.
//year = 28 + 1993;
//year = 2021
- 변수에 변화 값을 저장하면, 출력코드는 수정하지 않아도 된다!
public class VarEx1 {
public static void main(String[] args) {
System.out.println(6+3); // 9
System.out.println(6-3); // 뺄셈
System.out.println(6*3); // 곱셈
System.out.println(6/3); // 몫
System.out.println(6%3); // 나머지
// 값이 계속 변화한다면 원시 자료형을 기입하는 것으로는 한계가 있다.
int x = 4, y = 2;
// 변수 이름으로 메모리에 할당 된 값을 불러들이고 있다.
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
System.out.println(x%y);
}
}
2.1 출력 연산 과정
- 변수의 값을 불러온다.
- 변수의 값과 문자열을 접합연산한다.
- 문자열을 접합연산한다.
- 나머지 변수 값을 접합연산한다.
- 접합된 문자열을 메소드의 인자로 준다.
System.out.println("X: "+x+" / Y: "+y);
System.out.println("X: "+6+" / Y: "+5);
System.out.println("X: 6"+" / Y: "+5);
System.out.println("X: 6 / Y: "+5);
System.out.println("X: 6 / Y: 5");
3. 두 변수의 값을 교환하기
- 두개의 변수 사이에서 서로 값을 옮기려면 어떻게 해야하는가?
public class SwitchData {
public static void main(String[] args) {
int x = 5, y = 6;
/*변수의 규칙 상 단 하나의 값만 저장할 수 있기 때문에, 다른 값을 저장하면 기존 값은 없어져버린다.
* 그러므로 임시 변수를 만들고 x 값을 옮겨놓고 y 를 x 에 대입하고, y 에 임시변수 값을 대입해야한다.
* */
int temp; // 0
temp = x;
x = y;
y = temp;
System.out.println("X: "+x+" / Y: "+y);
}
}
- 변수의 규칙에 따라 단 하나의 값만 저장할 수 있다.
- 그러므로 임시 변수에 x 나 y 값을 저장하고, 남은 변수 값을 임시 변수에 옮겼던 변수에 대입하고, 임시 변수값을 남은 변수에 대입해야 한다.
3.1 과정
4. 명명규칙
- 프로그래밍에서 사용되는 모든 이름을 "식별자"라고 한다.
- 같은 영역 (클로져)내에서 서로 구분될 수 있어야한다.
- 대소 문자를 구분한다.
- 예약어는 사용할 수 없다.
- 숫자로 시작하면 안된다.
- 사용 가능한 특수문자는 $ 와 _ 뿐이다.
4.1 이외의 권장 규칙
- 클래스 이름은 대문자로 시작한다.
- 변수나 함수 이름은 소문자로 시작한다.
- 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- 상수는 대문자로 작성하며 _ 로 단어를 나눈다.
Hello.class // 클래스 이름은 대문자로 시작한다.
public void functionName() {..} // 함수나 변수 이름은 소문자로 시작한다.
int humanAge; // 여러 단어로 이루어진 이름은 단어의 첫글자를 대문자로 한다.
static final int NUMBER_CONST = 0;
// 상수는 대문자로 작성하며, 다른 단어는 _ 로 구분한다.
'Java' 카테고리의 다른 글
5. printf() (0) | 2021.08.13 |
---|---|
4. 상수와 리터럴 (0) | 2021.08.13 |
3. 변수의 타입 (0) | 2021.08.12 |
1. 주석 (0) | 2021.08.10 |
0. 특징, JVM, (0) | 2021.08.10 |