자바 변수란?
자바나 다른 프로그래밍 언어에서 변수란,
대충 변하는 수라고 생각을 하면 쉽다. 예를 들어 변수 a가 정수일때는 a에 1이나 3이나 1972같은 값을 넣어줄수도 있다.
하지만 자바는 파이썬과는 달리 선언하는데 특정 방법이 있다. 양식은
[변수타입] (이름);
으로 선언한다.
예를 들어서 char타입으로 c라는 변수를 선언할때
char c;
을 한다. 또한 선언과 동시에 할당을 시켜줄수도 있다. 예를 들어:
int a = 21; //int 타입인 a를 선언하여 21을 할당
변수타입
변수타입은 자바에서 크게 8가지가 있다.
정수
정수는 선언할때 크기에 따라 크게 4개로 나뉘어진다.
int
int는 intiger의 약자이며 제일 기본적인 정수 저장 변수다.
범위는 최대 21억으로 일반 용도로는 넉넉하다.
선언방식은
int num;
크기는 4-Byte다.
short
short는 정수 변수 중에서는 2번째로 제일 작다.
최대 10000까지 밖에 저장을 못하며, 생각나는 용도는 저장공간 절약 밖에 없다.
선언방식은
short num;
크기는 2-Byte다.
long
정수 변수 중에서 제일 큰 값을 저장할 수 있다.
범위는 9,223,372,036,854,775,807(알아서 읽으셈)이다.
선언방식은
long num;
하지만 자바에서 long같은 경우에는 int로 컴파일이 될수 있기때문에 만약 할당을 할때 뒤에 ‘L’이나 ‘l’을 붙혀야 한다.
예를 들어:
long num = 19721121L;
이렇게하면 컴파일러가 값을 long으로 인식한다.
크기는 무려 8-Byte다.
Byte
byte는 -128에서 127까지 밖에 저장못하는 제일 작은 정수 변수타입이다.
크기는 4-Byte를 차지하는 int와는 다르게 8-Bit (1-Byte)로 자동지정이 된다.
선언방식은
byte num;
문자
문자는 크게 2개로 나뉘어진다.
char
문자 하나를 저장할때 쓰이며, 배열로 만들면 문자열 저장이 가능하다.
선언방식은
char str; //일반 문자
char[] strArr; //문자열(길이 선언 X)
일반 char형은 크기가 2-Byte다.
string
보통 더 긴 단어나 문장을 저장할때 쓰인다, 다행이도 C와는 달리 따로 파일 불러올 필요가 없다.
선언방식은
String str;
크기 제한은 제대로 알려진건 없다.
실수
실수는 보통 유리수 중에서 정수가 아닌 유리수를 저장할 때 사용된다.
double과 float가 있는데 눈에 보이는 차이는 크게없다.
둘의 차이점은 float는 소수점 밑 6자리까지 저장이 되며 double은 소수점 밑 15자리까지 저장된다.
선언방식은 각각
float fl;
double db;
와 같이 한다.
float는 4-Byte, double은 8-Byte다.
명명규칙
명명규칙은 변수를 선언하는 과정에서 이름을 정하는 규칙을 말한다. 보통은 변수이름을 프로그래머가 원하는대로 정할 수 있지만, 다음 규칙을 무조건 따라야 한다.
-
예약어 금지
int나 char, if등 이미 정해진 것들은 불가능하다.추가로 *java에서의 예약어들:*
abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
- 숫자로 시작하면 안된다
int 2a;
는 불가 하지만
int a2;
같이 숫자로 끝나는 것은 가능하다.
- 특수기호는 ‘_‘와 ‘$’만
왠지는 모르겠지만, 이 2개만 가능하다.형변환
가끔씩 string같은 문자로 받은 숫자를 정수 타입으로 변환시켜서 사용을 해야할때가 있다.
이는 타입마다 다르지만, 형식은 다 비슷하다. - string을 int로
package wow; public class test { public static void main(String[] args) { String s_num = "10"; int i_num = Integer.parseInt(s_num); //1번방식 int i_num2 = Integer.valueOf(s_num); //2번방식 } }
- string을 double 또는 float로
package wow; public class test { public static void main(String[] args) { String s_num = "10"; double d_num = Double.valueOf(s_num); //Double float f_num = Float.valueOf(s_num); //Float } }
- int를 float 또는 double로
package wow; public class test { public static void main(String[] args) { int i_num = 10; double d_num = (double)i_num; //Double float f_num = (float)i_num; //Float } }
다 적으면 너무 많지만 대부분 형식은
a = 변수타입.valueOf(strNum); //String 타입인 strNum을 "변수타입"으로 변환
이거나
a = (변수타입)DoublNum //double 타입인 DoublNum을 "변수타입"으로 변환
일때가 많다.