변수(variable)란?
💡말 그대로 변하는 수 즉, 고정되지 않은 수를 변수라고 의미한다.
프로그래밍 언어에선 변수란 값을 저장할 수 있는 메모리상의 공간을 의미한다.
변수의 선언과 초기화
- 변수타입이란?
변수에 저장 될 값이 어떤 타입(type)인지 지정하는 것이다.
지정된 타입에 맞게 값을 설정하면 된다.
정수형, 실수형, 문자형 등 다양한 타입을 지원한다. - 변수이름이란?
다른 변수와 서로 구분짓기 위해 사용하는 이름이며,
서로 구별되어야 하기에 동일한 변수명이 존재해선 안된다.
변수의 초기화
변수를 선언 시 반드시 초기화를 해야한다.
초기화란 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.
메모리는 모두 공유하는 자원이므로, 이미 이전에 저장된 데이터가 남아있을 수 있기 때문이다.
값을 저장할 때, 대입 연산자 '='를 사용한다.
Java에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다.
예를들어 int num = 1 이면, num 이라는 변수에 1이라는 값을 초기화 한다는 의미이다.
public class Example {
public static void main(String[] args) {
int weight = 88;
int age = 27;
System.out.println("age = " + age); // 27
System.out.println("weight = " + weight); // 88
age += 1; // 변수 age에 값을 1 증가시킨다.
weight += 3; // 변수 weight에 값을 3 증가시킨다.
System.out.println("age + 1 = " + age); // 28
System.out.println("weight = " + weight); // 91
}
}
변수의 명명규칙
변수의 이름을 정할 때 생각보다 많은 생각을 하게 된다.
어떤 용도인지에 따라 달라지기에,
되도록 처음 보는 사람도 이해 할 수 있는 규칙을 정해주는게 좋다.
규칙은 아래와 같다.
➡️ 영문자, 숫자, 밑줄(_), 달러 기호($)로 구성된다.
💡 $price는 허용되지만, p$rice는 허용되지 않는다.
➡️ 영문자로 시작해야하며, 숫자로 시작할 수 없다.
💡 num1은 허용되지만, 1num은 허용되지 않는다.
➡️ 대소문자가 구분되며, 길이에 제한이 없다.
💡 MyNum 과 myNum은 서로 다른 변수이다.
➡️ 예약어(Reserved Words)를 사용해서는 안된다.
💡 예약어란 프로그래밍 언어에서 이미 사용하는 단어에 대한 집합이다.
변수의 스코프와 라이프타임
💡 스코프(Scope)란?
변수에 접근하거나 접근할 수 있는 유효범위/영역이다.
💡 라이프타임(LifeTime)이란?
변수가 메모리에 살아있는 시간이다.
Type | Scope | Life-Time |
인스턴스 변수 | static 메서드를 제외한 클래스 전체 | 객체가 메모리에 남아있을 때 까지 |
클래스 변수 | 클래스 전체 | 프로그램이 끝날때 까지 |
지역 변수 | 변수가 선언된 함수 내부 | 함수가 종료 될 때 까지 |
public class Example {
int num; // 인스턴스 변수
static int count; // 클래스 변수
public static void main(String[] args) {
String str = ""; // 지역 변수
}
}
기본형과 참조형
💡자료형은 크게 기본형, 참조형 2가지로 나뉘게 된다.
기본형은 실제 값을 저장하고
참조형은 값이 저장되어 있는 주소를 갖게된다.
➡️ 기본형은 8개의 타입을 미리 정의하여 제공한다.
분류 | 크기 | 타입 | 기본 값 | 설명 |
논리형 | 1 byte | boolean | false | true, false 중 하나의 값을 가지며, 조건식 및 논리적 계산에 사용된다. |
문자형 | 2 byte | char | '\u0000' | 변수에 하나의 문자만 저장할 수 있다. |
정수형 | 1 byte | byte | 0 | 이진 데이터를 다룰때 사용된다. |
2 byte | short | 0 | C언어와 호환을 위해 추가되었다. | |
4 byte | int | 0 | 정수 값을 저장 할 때 사용된다. | |
8 byte | long | 0L | 매우 큰 정수 값을 다룰때 사용된다. | |
실수형 | 4 byte | float | 0.0F | float 보다 정밀한 값을 저장하며, 기본적으로 사용되는 실수 타입이다. |
8 byte | double | 0.0 |
➡️ 기본형을 제외한 타입들이 모두 참조형 타입이다.
💡값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
타입 | 기본값 | 메모리 크기 |
배열(Array) | null | 4 byte |
클래스(Class) | ||
열거(Enumeration) | ||
인터페이스(Interface) |
상수와 리터럴(constant & literal)
➡️ 상수는 변수와 공통된 특성을 가지지만, 단 한가지 다른 점이 있다.
값을 저장하면 다른 값으로 변경 할 수 없으며, 변수 타입 앞에 final을 붙여줘야 한다.
💡final int MAX_CONNECT = 15;
➡️ 리터럴은 소스 코드의 고정된 값을 대표하는 용어이다.
💡final int MAX_CONNECT = 15;
OUTRO
오늘은 Java 변수에 대해 알아보았는데,
반드시 숙지 해야 할 개념이라고 생각합니다.
블로그 포스팅을 하면서 개념을 다시 바로 잡게되는 소중한 시간이 되는것같습니다.
그러면 다음 포스팅에서 뵙겠습니다.
'Language > Java' 카테고리의 다른 글
[Java] 불변 객체 (Immutable Object)란? (0) | 2024.04.08 |
---|---|
[Java] 기본형과 참조형(Primitive Type & Reference Type) (0) | 2024.04.06 |
[Java] 클래스, 객체, 메서드, 생성자 (0) | 2024.03.30 |
[Java] 연산자 (Operator) (0) | 2024.03.29 |
[Java] 자바(Java)란 무엇인가? (0) | 2024.03.25 |