본문 바로가기

교육

java(자바) 변수 알아볼까요?

반응형

자바 변수란

일반적인 의미의 변수란 상황을 바꿀 수 있는 '변하는 수'라고 지칭되지만 프로그래밍 세계에서는 보통 '특정 값을 저장할 수 있는 메모리 상의 공간'을 뜻합니다. 즉. 변수 하나에는 하나의 값만 저장할 수 있기 때문에 새로운 값을 저장하면 기존의 변수에 저장된 값은 소멸하게 됩니다.


< 변수의 기본 구조 >

intage=25;

 

int = 변수의 타입

age = 변수의 이름

25 = 변수에 저장된 값. 즉 age라는 변수에 저장된 값이 25라는 뜻

; = 하나의 문장이 끝난 것을 뜻함


< 변수 사용 예시 >

변수 year에 2017을 부여하고 / 변수 age에 14를 부여하고자 할 때


package pack1;

 

public class Practice {

 

public static void main(String[] args) {

int year = 0;

int age = 14;

 

System.out.println(year);

System.out.println(age);

 

}

}

 

< 변수 사용 예시 결과 >

year와 age에 부여된 변수 값이 2017과 14가 출력되었습니다.

System.out.println(변수명); 은 입력한 코드를 출력하기 위한 문장입니다. 추후에 좀 더 자세히 설명하고 일단은 이렇게만 외워둡니다.


2017

14


< 변수의 명명규칙 >

대소문자는 구분되며 길이에 제한은 없습니다.

예약어는 사용해서는 안됩니다. (예시 : true는 불가 / True는 가능)

숫자로 변수가 시작되어서는 안됩니다. (예시 : top10은 가능하지만 10top은 변수 사용 불가)

특수문자는 _ 와 $만을 허용합니다. (예시 : JAVA_HOME$STAR는 가능 JAVA@HOME#은 사용 불가)

클래스 이름의 첫 문자는 항상 대문자로 사용합니다.

여러 단어로 이뤄진 이름은 단어의 첫 문장을 대문자로 합니다. (예시 : SeaOcean이나 CarTire 같은 형식)

상수의 이름은 모두 대문자로 합니다. (예시 : PI, MAX_NUMBER)

     5번, 6번, 7번 규칙은 필수가 아닌 암묵적인 규칙이지만 모두 이 규칙을 지키려 하기 때문에 가능하면 규칙을 따르자

 

< 변수의 타입 >

변수에 사용하는 값의 종류는 우선 문자와 숫자로 나뉠 수 있으며, 숫자는 정수와 실수로 구분할 수 있습니다.

 

값  ----- 문자 A, B, C,D, Z 등

     ----- 숫자 ----- 정수 : 1, 5, -12 등

                 ----- 실수 : 3.14, -3.0X10^8 등

 

이렇게 종류에 따라 값이 저장될 공간의 크기와 저장 형태를 정의한 것을 자료형(data type) 변수라고 합니다.

자료형은 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 등이 있습니다.

다양한 형태가 있기 때문에 변수에 저장하고자 하는 값의 형태를 고려해서 변수를 선택할 필요가 있습니다.

 

그리고 자료형은 크게 '기본형'과 '참조형'으로 나눠지는데 기본형 변수는 실제 값이 변수에 저장되는 반면 참조형 변수는 어떤 값이 저장되어 있는 주소(address)를 값으로 갖습니다.  경찰서에 있는 경찰차의 대수를 변수로 삼는다고 가정한다면 아래와 같은 느낌이 될 것이고 종류 역시 아래에 서술하였습니다.

 

- 기본형 변수는 이런 느낌 -

GANGNAM_POLICE_CAR : 12대

 

- 기본형 변수(primitive type) 종류 -

논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)

 

 

- 참조형 변수는 이런 느낌 -

GANGNAM_POLICE_CAR : 서울 강남구 테헤란로 114길 11, 강남 경찰서 경찰차 주차장

 

- 참조형(reference type) 변수 종류 -

위의 기본형 변수를 제외한 나머지 타입

 물론 실제 변수는 이렇게 12대나 한글 주소가 아닌 영어나 숫자로만 적힐 것입니다.

 

< 기본형 변수의 종류 >

기본형 변수는 모두 8개의 타입이 있습니다.

 

논리형 [boolean]

true나 false 중 하나를 기본값으로 가지며, 논리적 계산이나 조건식에 주로 활용

 

문자형 [char]

문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장 가능.

 

정수형 [byte, short, int, long]

정수를 저장하는 데 주로 사용되며 int가 가장 많이 쓰인다. byte는 이진 데이터를 다룰 때 사용되며, short는 C언어와의 호환성을 위해 추가된 변수

 

실수형 [float, double]

정수(2, -4)가 아닌 실수(3.14, 10x2^6)를 저장하기 위해 사용되며 주로 사용되는 건 double

 

 기본형 변수의 종류 및 크기는 반드시 외워야 함







< 상수와 리터럴 >

상수(constatn)는 변수와 마찬가지로 값을 저장하는 공간이지만 한번 저장하면 수정할 수 없습니다.

상수를 선언하는 방법은 변수의 타입 앞에 final를 붙여주기만 하면 된다. 리터럴(literal)은 상수의 변하지 않는 값 자체를 의미합니다.

 

finalint SPEED =120;

 

final: 상수임을 정의함, 즉 SPEED 변수의 120값이 바뀔 수 없다는 걸 의미

int : 정수형 변수

SPEED : 임의로 붙인 변수명. 120km로 달리는 변수라 치자...

120: 변하지 않는 값. 즉, 리터럴

; : 문장을 끝나는 것을 의미함

 

 

< Scanner를 활용하여 키보드 타이핑 내용을 입력받기 >

Scanner 클래스를 활용하여 키보드로 입력된 내용을 입력하는 방법

문장 뒤에 //xxxx는 주석을 달 때 쓰는 방법이다. 추후에는 설명을 // 주석 형태로 할 예정

문장을 감싸주는 { }에 대해 살펴보자 양파의 껍질을 또 다른 껍질이 싸듯이 겹겹이 쌓여 있는 것을 볼 수 있습니다.

잘 모르겠으면 { 가 있는 문장의 색깔을 살펴보자. 맨 아레에 } 가 2개가 있지만 색상이 다른 것을 볼 수 있습니다.

즉, A{ABC{E}} 와 같은 형태로 문장이 구성됩니다.



package pack1; // pack1이라는 패키지 내부에 있다는 것을 선언. 패키지는 일종의 자바 파일을 모아놓은 폴더라고 보면 됩니다.

 

import java.util.Scanner;   // Scanner 클래스를 사용하기 위한 선언. 프로그램을 로딩한다고 생각하면 됩니다.

 

public class Practice { // 클래스 전체를 감싸주는 문장

 

public static void main(String[] args) { // 문장의 시장과 끝을 뜻합니다. 일단은 이렇게만 알고 있는 것이 좋습니다.

Scanner scanner = new Scanner(System.in); // Scanner 클래스의 객체를 생성

System.out.print("숫자를 입력해보세요"); // 사용자가 숫자를 입력할 수 있도록 화면에 출력하는 역할. 그러니까 그냥 안내판

String input = scanner.nextLine(); // 입력받은 내용을 input 변수에 저장하게 됩니다.

int num = Integer.parseInt(input); // 입력받은 내용의 input 타입의 값으로 변환합니다.. 만약에 이 문장이 없으면 숫자들 문자든 다 받게 됩니다.

 

System.out.println("입력내용 :" + input); // input에 입력된 값을 출력합니다.



- 출력 결과 -

 

숫자를 입력해보세요 : [키보드로 입력한 숫자]

입력 내용 : [키보드로 입력한 숫자]


< 진법 및 파일의 크기 >

진법은 원칙만 알고 있으면 구구단같이 계산하면 되기 때문에 그렇게 어렵지 않습니다. 아래의 링크를 참고하세요.

 

진법 : https://namu.wiki/w/%EC%A7%84%EB%B2%95

비트, 바이트 : https://namu.wiki/w/%EB%B9%84%ED%8A%B8#s-3.1

 

 < 기본형 변수의 종류 및 예시 >

논리형(boolean) : 논리형에서 사용, true냐 false 인지를 정의하고 저장합니다. 즉 이 변수가 취할 수 있는 건 맞다, 틀렸다 밖에 없습니다.

 

      boolean power = true;

      boolean power_check = False// 에러. 대소문자 구분을 하기 때문에 False는 쓸 수 없다.

 

문자형(char) : 문자를 저장하기 위한 변수. 단 하나의 문자만을 저장할 수 있습니다. 그리고 진법을 배웠으면 알겠지만 A를 A로 저장하는 것이 아닌 유니코드 값인 65로 변환하여 저장하기 때문에 A를 쓰나 65를 쓰나 값은 동일합니다.

 

     char ch = 65; // 숫자 '65'를 char 타입의 변수 ch에 저장

 

     char ch = 'A'; // 문자 'A'를 char 타입의 변수 ch에 저장

     int code = (int)ch; // ch에 저장된 A를 int(정수) 형태로 변환


 < 특수 문자 사용법 >

코드를 작성하다 보면 줄 내림 등 특수 문자를 사용하고 싶은 경우가 있는데 이는 아래와 같습니다.



< 정수형 변수의 종류 >

정수형 변수는 앞서 말한 것처럼 숫자를 저장하는 것이며 타입에 따라 저장할 수 있는 범위가 다릅니다. 그냥 모두 쓸 수 있는 변수를 쓰면 되지 왜 종류를 나눈 것인가 하면 일반적인 사용 경우엔 별문제가 없지만 우주선이나 비행기 같이 IoT 같은 디바이스에 들어가는 프로그램은 용량 등 모든 것을 최적화 해야 되기 때문입니다. 계산에 필요한 범위가 -10~10인데 -128000 ~ 128000을 지원하는 변수는 굳이 쓸 필요가 없는 것입니다. 자세한 내용은 아래를 참고. 종류는 byte, short , int, long 이렇게 4가지 종류가 있다.


그리고 변수에 할당된  최대 값을 초과하였을 때 생길 수 있는 현상인 '오버플로우(OverFlow)'에 대한 글은 아래를 참고

https://m.blog.naver.com/PostView.nhn?blogId=wwwkasa&logNo=80180210172&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

 

 < 실수형 변수의 종류 >

실수형 변수에는 float와 double이 있습니다. 이 변수들이 표현할 수 있는 데이터 범위는 아래 링크를 참고

http://blog.daum.net/iiiiiiiiiiiiiii99/16590270

 

 

< 형변환(casting)에 관해 >

모든 변수와 리터럴에는 타입이 있다는 것을 앞에서 설명했습니다. 그리고 프로그램을 작성하다 보면 서로 다른 타입 간의 연산을 수행해야 하는 경우도 있을 것인데 이를 위한 수행 과정을 형변화, 즉 casting이라고 합니다. 앞에서 문자 A를 유니코드 65로 변환한 것이 일종의 형변환 과정입니다.


double d = 65.3 // 변수 d에 65.3의 실수를 입력

int score = (int)d; // d에 입력된 실수 65.3을 정수로 입력

 

이렇게 하면 실수 65.3에서 소숫점 1자리를 떼버리고 정수형 값으로 변환해서 출력하게 됩니다.

다만 유념해야 될 것은 실제로 떼어버리는 것은 아니고 뗀 것처럼 보이게 만들 뿐입니다.