수학에서의 변수는 상수의 반대로써 "변하는 수"라고 정의되지만 프로그래밍 언어에서의 변수는 값을 저장할 수 있는 메모리상의 공간을 일컫는다. 그래프도 수학과 자료구조에서의 정의가 다른 것 처럼ㅎ
변수를 선언하면 메모리에 공간을 만드는 것이다.
자바의 변수 선언과 초기화는 다음과 같이 한다.
1 | int age = 21; // 타입 변수 연산자 | cs |
우선 변수를 선언한 다음에 초기화를 할 수 있다. 초기화란 선언된 변수에 유효한 값을 넣어주는 것인데,
만약 초기화를 하지 않았다면 그 변수에는 쓰레기값이 들어가게 되고 사용할 수 없게 된다. 변수를 사용하고자 한다면 변수 선언 후 초기화를 해주자!!
두 변수의 값 교환하기
개발자 밈 중에 개발자 두 명이 자리를 바꾸는 데 필요한 의자 갯수는? 이라는 밈이 있다.
상식적으로 생각해보면 2개면 충분할 것이다. 동시에 일어나서 각자 자리를 바꾸면 되는 것이다. 하지만 프로그래밍 언어에서 두 변수의 값을 교환하려면 3개의 변수가 필요하다.
x와 y의 값을 변경한다고 하면, x를 임의의 변수에 저장하고 y의 값을 x에 옮긴다. 그리고 임의의 변수에 저장되었던 x값을 y에 옮겨줌으로 두 변수의 값이 변경되었다.
즉 사람이 의자에 동시에 일어나서 바꾸는 것이 아닌 A라는 사람이 다른 의자에 앉아 있을 때 B라는 사람이 원래 A자리에 앉고, 다른 의자에 앉아 있던 A는 B가 움직이고 나서야 그제야 원래 B가 있던 의자에 앉는 것이다.
자바 코드로 구현해보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Main{ public static void main(String args[]){ int x=10, y=20; int tmp=0; System.out.println("x:"+x+" y:"+y); tmp = x; x = y; y = tmp; System.out.println("x:"+x+" y:"+y); } } | cs |
실행 결과는 다음과 같이 출력된다.
변수의 명명규칙
변수의 이름과 같이 프로그래밍에서 사용하는 모든 이름은 "식별자(identifier)"라고 부르며, 변수 이름을 짓는데는 몇가지 규칙이 있다.
- 대소문자는 구분되며 길이에 제한이 없다.
- 예약어를 사용해서는 안된다
- 숫자로 시작해서는 안된다.
- 특수문자는 '_'와 '$'만 혀용한다.
다른 것들은 아아~ 하고 넘어 갈 수 있는 부분이지만 예약어에 대해서 어?하고 멈출 수도 있다.
예약어란 프로그래밍언어의 구문에 사용되는 단어를 뜻한다. 여기에는 if, break, for, int, return 등이 속한다.
이것들로 변수 명을 짓는다면 컴퓨터는 이게 변수라고 해놓은 건지 예약어 기능을 사용하는 건지 알수가 없기 때문에 사용을 제한한 것이다. 다만 iff, break1 등과 같은 형태는 사용 가능하다.
그리고 다음은 필수는 아니지만 자바 프로그래머들이 암묵적으로 지켜온 룰이다.
- 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 여러 단어로 이루어진 이름의 단어의 첫 글자를 대문자로 한다. (카멜케이스)
- 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
🐫 camelCase
camelCase는 이름에서 힌트를 준 것처럼 대소문자로 띄어쓰기를 구분한다. 낙타의 등처럼 울퉁불퉁 하다는데에서 이름을 따왔다. 만약 very important things 라는 변수를 camelCase에 적용시킨다면 veryImportantThings 요로코롬 나온다.
자바나 자바스크립트는 camelCase를 사용한다.
🐍 snake_case
snake_case는 소문자로 작성하되 띄어쓰기를 _ 요 언더바를 사용하여 나타낸다. very important things를 snake_case에 적용시킨다면 very_important_things 이처럼 만들 것이다.
파이썬에서는 snake_case를 주로 사용한다.
자바의 정석을 읽고 작성한 글입니다.
'Programming Language > 자바' 카테고리의 다른 글
[자바] static 메서드와 static 클래스 (0) | 2023.08.20 |
---|---|
[자바] 가비지 컬렉션 GC (0) | 2023.07.15 |
[자바] formatting 출력하기, 입력받기 (0) | 2022.09.26 |
[자바] 변수 2 (0) | 2022.09.25 |
[자바] 세상과 인사하기 (0) | 2022.09.20 |