변수 : 하나의 값을 저장할 수 있는 메모리 공간
변수의 이름을 가진 이유는 프로그램에 의해서 수시로 값이 변동될 수 있기 때문이다.
변수에는 다양한 타입의 값을 저장하는 게 불가능하다. ex) 정수 타입의 변수에는 정수만 저장 가능
변수명 작성 규칙(변수 명명 규칙) 예시
우리는 변수명의 작성 규칙을 따를 필요가 있다. 에러가 나거나 에러를 사전에 방지하기 위함이다.
작성 규칙은 아래와 같다.
작성 규칙 | example |
첫 번째 글자는 숫자로 시작할 수 없고 문자이거나 $ , _ 이어야 한다. | color, $wesley, _harryColor |
영어 대소문자를 구분해야한다. | mysound, mySound 서로 다른 문자 |
문자수 제한 없다. | |
예약어 사용 불가능하다. | 예약어는 아래에 적어두겠다. 양이 많다.(예약어 사용시 컴파일에러) |
첫문자는 소문자로 시작하고 다른단어 혼용시 두번째 단어 맨 앞을 대문자로 기재한다. | mySound, tistoryColor, soundVolum |
예약어는 우선 기본적인, 초반 쓰이는 종류만 알아본다. 자바를 사용하다 보면 자연스레 알게 된다.
예약어 분류 | 예약어 종류 |
기본 데이터 | boolean, byte, char, short, int, long, float, double |
접근 지정자 | private, protected, public |
클래스 관련 | class, abstract, interface, extends, implements, enum |
제어문 | if, else, switch, case, default, for, do, while, breake, continue |
논리값 | true, false |
예외 | try, catch, finally, throw, throws |
등등 다양한 종류가 있다.
변수를 선언하기 전 우리는 변수의 타입과 이름을 정해야 한다.
우선 변수의 기본 데이터 타입을 알아본다.
종류 | 기본타입 | 메모리 사용 크기(byte) | 메모리 사용 크기(bit) |
정수 | byte | 1 | 8 |
char | 2 | 16 | |
short | 2 | 16 | |
int | 4 | 32 | |
long | 8 | 64 | |
실수 | float | 4 | 32 |
double | 8 | 64 | |
논리 | boolean | 1 | 8 |
여기서 bit와 byte는
8개의 bit를 묶은 것이 1 byte로 설명할 수 있으며 2진수로 이루어져 있습니다.
1비트는 0,1로 나타낼 수 있는 숫자는 2입니다 (2^1)
2비트는 00,01,10,11로 나타낼 수 있는 숫자는 4입니다. (2^2)
3비트는 000,001,010,011,100,101,110,111로 나타낼 수 있는 숫자는 8입니다.(2^3)
이런 식으로 bit가 구성되어 있으며 8비트의 경우 2^8로 나타낼 수 있는 숫자는 256이 됩니다.
1bit | 0,1 |
2bit | 00,01,10,11 |
3bit | 000,001,010,011,100,101,110,111 |
기본 타입을 알아보았으니 선언을 해본다.
변수명은 항상 값이 무슨 뜻을 지니는지 알아볼 수 있도록 짓는 것이 좋다.
과거 변수명을 내 멋대로 지었다가 변수명이 겹쳐 애를 먹었던 적이 있다. 늘 최선은 미리 방지하는 것이라 생각한다.
int wesley;
double harry;
위 코드의 int는 정수형 타입으로써 정수 값을 저장할 수 있도록 선언하는 역할을 합니다.
double은 실수 값을 저장할 수 있도록 선언하는 역할을 합니다.
이렇게 되면 wesley라는 변수명엔 정수를 저장할 수 있고, harry라는 변수명엔 실수형을 저장할 수 있게 됩니다.
int wesley, wesley1, wesley2;
이런 식으로 사용하게 되면 한 번에 int 형의 변수명을 선언할 수 있습니다.
이제 변숫값을 저장해봅니다. 변수값을 저장하는 데에는 두 가지 방법이 있습니다.
우선 첫 번째로 wesley라는 변수명을 int로 선언해 줍니다.
그리고 난 뒤 wesley를 20이라는 숫자로 선언해주면
wesley에 20이 저장됩니다.
int wesley;
wesley = 20;
System.out.println(wesley);
를 통해 알아본 결과 Console에 20이 나온 것을 알 수 있습니다.
두 번째 방법은 한 번에 선언하는 것입니다.
int wesley = 15;
15가 나오는 것을 확인할 수 있습니다.
하지만 여기서 java를 처음 접하는 사람이라면 궁금증이 생기기 마련입니다.
int wesley = 15;
int wesley = 20;
System.out.prinln(wesley);
이런 식으로 작성하면 무슨 값이 나오는 걸까?
두 개의 값이 다 저장되는 걸까 하는 의문 말입니다.
이러한 궁금증은 직접 실행을 해보면 알 수 있습니다.
이 해당 사진을 보면 Duplicate local variable wesley라고 적혀있다.
이 오류는 wesley의 지역 변수가 중복된 것이다.
이를 해결하기 위해선 어떻게 해야 할까.
int wesley = 15;
wesley = 20;
System.out.println(wesley);
이렇게 쓰면 오류가 없어지고 우리가 처음에 알고자 했던 의문에 맞는 답이 된다.
결괏값을 살펴본다.
우리는 여기서 한 가지 wesley에 다른 수를 또 넣으면 기존에 저장되어 있던 15가 사라지고 20이 저장되는 것을 알 수 있었습니다. java는 위에서부터 읽기 때문에 15를 저장한 뒤 15를 지우고 20이 들어가게 되는 겁니다.
저희는 이것을 '초기화 한다' 라고 합니다.
만약 저희가 이름을 헷갈리게 지어서 변수명이 중복된다면 그전에 쓴 데이터는 날아가게 되기 때문에 변수명은 늘 신중하게 짓는 것을 추천드립니다.
늘 위에서 아래로를 기억하면 좋습니다.
int wesley = 20;
wesley = 15;
System.out.println(wesley);
15와 20 자리를 바꿔줘
이렇게 적는다면 정답은 15가 나오는 것입니다.
int wesley = 20;
wesley = 15;
System.out.prinln(wesley + wesley);
이렇게 적으면 결과값은 35가 나올까? 정답은 아니다.
30이 나오는 것을 확인할 수 있다.
여기서 그치지 않고 만약 20과 15의 값을 다 보고 싶을 경우가 있을 것입니다.
위에서 20의 숫자를 가지고 이리저리 굴리고 쓸고 다 쓴 뒤 필요 없어져 다른 수를 이리저리 굴리고 싶을 경우가 있습니다.
자바는 위에서부터 아래라는 말을 했었습니다.
예를 들어 System.out.println();을 이리저리 굴리는 과정이라 생각해봅니다.
그럼 답은 간단합니다.
int wesley = 20;
System.out.println(wesley);
wesley = 15;
System.out.println(wesley);
이렇게 작성하면 20으로 데이터를 이리저리 굴리고 다 사용이 되면 15로 선언해 준 뒤 다시 데이터를 굴릴 수 있는 것을 알 수 있습니다. 해당 코드의 결과값입니다.
println과 print의 차이
System.out.println();
System.out.print();
ln은 줄 바꿈을 의미합니다.
int wesley = 20;
System.out.println(wesley);
wesley = 15;
System.out.println(wesley);
20
15
이런 식으로 결과값을 구분 지어 알고 싶다면
System.out.println(); 를 사용하고
int wesley = 20;
System.out.print(wesley);
wesley = 15;
System.out.println(wesley);
2015
라고 출력을 하고 싶을 경우
System.out.print();를 사용하면 됩니다.
아래가 println인 이유는 값이 나온 뒤 ln이 적용되기 때문에
2015(줄바꿈)으로 적용되기 때문에 상관없습니다.
'IT Program > Java Basic' 카테고리의 다른 글
자바(java) 띄어쓰기 하는 법 & 이스케이프 문자(\t, \n, \",\') (4) | 2022.02.27 |
---|---|
java 로컬변수 지역변수 블록으로 간단하게 이해하기 & local variable error (2) | 2022.02.25 |
이클립스(eclipse) JRE 버전 바꾸는 방법 & JRE 버전 변경 (2) | 2022.02.24 |
자바(Java) 이클립스(eclipse) 프로젝트 생성 & Class 생성 & package 생성 (0) | 2022.02.24 |
eclipse UTF-8 설정 & 이클립스 언어 설정 & 이클립스 언어 오류 해결 (2) | 2022.02.24 |