변수 선언
컴퓨터 메모리(RAM)에는 값을 저장할 수 있는 수많은 번지(주소)들로 구성되어 있다. 메모리는 어디에, 어떤 방식으로 저장할지 정해놓지 않으면 개발이 불가능에 가깝게 되기 때문에 프로그래밍 언어에서는 변수라는 개념을 사용한다.
변수(Variable)
값을 저장할 수 있는 메모리의 특정 번지에 붙여진 이름이다.
변수를 통해 메모리 번지 하나에 하나의 값을 저장하고 읽을 수 있다.
변수에는 정수, 실수 등 다양한 타입이 있으며 다양한 값을 저장할 수 있다.
변수 사용을 위해서는 변수 선언이 필요하다
변수 선언은 어떤 타입의 데이터를 저장할 것인지, 변수 이름은 무엇인지 결정하는 것을 말한다.
변수의 값을 읽거나 변경하는 것을 변수 사용이라고 하며 출력문이나 연산식 내부에서 사용되어 변수에 저장된 값을 출력하거나 연산에 사용한다.
타입 변수 이름 ;
int x;
int studentNumber;
double num;
int x, studentNumber;
위와 같은 순으로 선언해야 한다.
같은 타입의 변수의 경우 콤마를 이용해 한꺼번에 선언할 수 있다.
변수 이름을 선언할 때는 규칙이 존재한다.
- 변수 이름 규칙
1. 영문자와 숫자, 언더바(_)로 이루어져야 한다. (특수문자, 공백 사용 불가능)
2. 첫 글자는 반드시 영문 또는 언더바(_)여야 한다. (숫자로 시작 불가)
3. 대소문자를 구별한다.
4. 예약어를 사용할 수 없다. ex) if, for 사용 불가
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다. (=> 카멜 표기법)
특수문자를 가장 앞에 사용하는 건 불가능 하다.
- 변수 사용 범위
자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하다.
그 밖에서는 사용할 수 없다.
package kr.or.ddit.study02.sec01;
public class VarExample01 {
// var1과 var2는 전역 변수
static int var1 = 1; // 클래스 변수
int var2 = 2; // 멤버 변수
public static void main(String[] args) {
int var3 = 3; // 로컬 변수(지역 변수)
System.out.println(var1);
System.out.println(var3);
// System.out.println(var4); // var4를 사용할 수 없다.
VarExample01 ve = new VarExample01();
ve.test();
}
public void test() {
int var4 = 4;
System.out.println(var1);
System.out.println(var2);
// System.out.println(var3); //var3을 사용할 수 없다.
System.out.println(var4);
}
}
- 전역 변수와 로컬 변수 차이
1. 전역 변수
클래스 내부, 메소드 외부에서 선언된 변수
멤버 변수와 클래스 변수로 나뉨.
2. 지역변수
메서드 블럭 내에서 선언된 변수
전역 변수 | 지역 변수 | ||
멤버 변수 | 클래스 변수 | ||
선언 위치 | 클래스 블럭 내 선언 | 클래스 블럭 내 static 사용 | 메서드 블럭 내 선언 |
초기화 | 자동 초기화 | 초기화 필수 | |
접근 | 클래스 내부의 모든 메서드 사용 | 선언된 블록 내부에서만 사용 | |
생명주기 | 객체가 생성될 때 할당 객체 소멸 시 소멸 |
프로그램 시작 시 할당 종료 시 소멸 객체 생성 없이 사용가능 |
블록 내부 실행 종료 시 소멸 |
package kr.or.ddit.study04;
import java.util.Scanner;
// 클래스 블록 시작 {
public class IfExample {
// 클래스 범위내에 변수를 선언해서 다른 메소드에서도 사용가능
Scanner sc = new Scanner(System.in);
int i1 = 10;
// 메인 메소드 블록 시작 {
public static void main(String[] args) {
IfExample obj = new IfExample();
obj.method1();
}
// 메인 메소드 블록 끝 }
// method1 메소드 블록 시작 {
public void method1() {
// if 메소드 블록 시작 {
int i2 = 11;
System.out.println("####################");
System.out.println("전역 변수 : " + i1);
System.out.println("method1 안에 변수 : " + i2);
if(true) {
int a = 10;
System.out.println("-------------------");
System.out.println("전역 변수 : " + i1);
System.out.println("method1 안에 변수 : " + i2);
System.out.println("if문 안에 변수 : " + a);
System.out.println("-------------------");
}
// if 메소드 블록 끝 }
System.out.println("####################");
}
// method1 메소드 블록 끝 }
}
// 클래스 블록 끝 }
변수 초기화
변수에 최초로 값을 저장하는 걸 말하며 메모리에 변수가 생성된다.
타입 변수 이름 ;
변수 이름 = 값;
package kr.or.ddit.study02.sec01;
public class VarExample02 {
public static void main(String[] args) {
VarExample02 obj = new VarExample02();
obj.method1();
obj.method2();
}
public void method1() { // 실행을 위해선 main에서 불러와야 함
int x;
int y;
int z;
x = 10;
y = 11;
z = 12;
System.out.println("x 값은 " + x);
System.out.println("y 값은 " + y);
System.out.println("z 값은 " + z);
}
public void method2() {
int x = 10;
int y = 11;
int z = 12;
System.out.println("x 값은 " + x);
System.out.println("y 값은 " + y);
System.out.println("z 값은 " + z);
}
}
'자바' 카테고리의 다른 글
[Java 초급] 4.5장 테스트 (2) | 2023.12.06 |
---|---|
[Java 초급] 4장 Scanner 이용과 타입 변환 (0) | 2023.12.05 |
[Java 초급] 3.5장 테스트 (0) | 2023.12.05 |
[Java 초급] 3장 타입들의 종류 (0) | 2023.12.05 |
[Java 초급] 1장 이클립스 (eclipse) 및 자바 (2) | 2023.12.03 |