수학: 변하는 수
프로그래밍 언어: 값을 저장할 수 있는 메모리상의 공간
ㄴ 이 공간에서 저장된 값은 변경될 수 있기에 변수랍니다.
변수란, 단 하나의 값을 저장할 수 있는 메모리 공간
int age;
int는 변수 타입, age는 변수 이름
변수타입: 변수에 저장될 값이 어떤 '타입(type)'인지 지정하는 것.
변수이름: 변수에 붙인 이름. (중복 X)
변수를 선언하면, 메모리의 빈 공간에 '변수 타입'에 알맞은 크기의 저장공간이 확보되고
앞으로 이 저장공간은 '변수 이름'을 통해 사용할 수 있게 됨.
변수를 선언한 이후에는 반드시 '초기화(initialization)'을 해야함.
(메모리는 여러 프로그램이 공유하는 자원이므로, 다른 프로그램에 인해 저장된 쓰레기 값(garbage value)가 남아있을 수 있음.)
int age = 25;
(정수인 age는 25라는 뜻)
지역변수는 사용되기 전에 초기화를 반드시 해야 하지만, 클래스 변수와 인스턴스 변수는 초기화를 생략할 수 있음.
" 변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것 "
println을 사용하면, 화면에 변수를 출력하라는 뜻이다.
ex) system.out.println(age);
-> 25
int x = 10;
int y = 20;
두 변수에 담긴 값을 서로 바꾸려면?
x = y;
y = x;
하지만, 첫번째 단계에서 이미 x의 값은 없어졌기 때문에 x의 값을 y에 저장해도 소용 없음.
그렇다면, x의 값을 위한 임시 저장소로 사용하면 된다.
int x = 10;
int y = 20;
int tmp;
tmp = x;
x = y;
y = tmp;
덧셈 연산자 '+'는 두 값을 더하기도 하지만, 문자열과 숫자를 하나로 결합하기도 함.
프로그래밍에서 사용하는 모든 이름을 '식별자(identifer)'라고 하며, 식별자는 같은 영역 내에서 서로 구별 되어야 함.
대소문자가 구분되며 길이에 제한이 없다.
ㄴ True와 true는 서로 다른 것으로 간주된다.
예약어를 사용해서는 안 된다.
ㄴ true는 예약어라서 사용할 수 없지만, True는 가능하다.
숫자로 시작해서는 안 된다.
ㄴ top10은 허용하지만, 7up은 허용되지 않는다.
특수문자는 '_'와 '$'만을 허용한다.
ㄴ $harp은 허용되지만, S#arp은 허용되지 않는다.
예약어를 키워드(keyword) 또는 리저브드 워드(Reserved word)라고 하는데,
프로그래밍 언어의 구분에 사용되는 언어를 뜻한다.
예약어는 클래스나 변수, 메서드의 이름(identifier)으로 사용할 수 없다.
MI) goto와 const는 실제로 사용되지 않으며, assert는 JDK1.4부터 JDK1.5부터 새로 추가되었다.
그 외에 필수적인 것은 아니지만, 자바 프로그래머들의 약속 🤙
1. 클래스의 이름 첫 글자는 항상 대문자로 한다.
ㄴ 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
ㄴ ex) lastIndexOf, StringBuffer
상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
ㄴ ex) PI, MAX_NUMBER
만일 특별한 방식으로 식별자를 작성한다면 미리 규칙(coding convention)을 정해놓고 프로그램 전체에 일관되게 적용하는 것도 필요하다.
MI) 자바에서는 모든 이름에 유니코드를 포함된 문자들을 사용할 수 있지만,
적어도 클래스 이름은 ASCII 코드(영문자)로 하는 것이 좋다.
유니코드를 인식하지 못하는 운영체제(OS)도 있기 때문이다.
변수의 이름은 짧을수록 좋지만, 약간 길더라고 용도를 알기 쉽게 '의미있는 이름'으로 하는 것이 좋음.
변수의 선언문에 주석으로 변수에 대한 정보를 주는 것도 좋음.