

🔯 변수 (Variable)
메모리(ram)에 값을 기록하기 위한 공간
데이터를 저장하는 메모리(ram)의 일정 공간
✔ 선언
컴파일러에게 어떤 변수를 사용하겠다고 미리 알리는 것
메모리 공간에 데이터를 저장할 수 있는 공간을 할당하고 이름을 지정하는것
✔ 변수값 기록 이유
- 프로그램 실행시 사용할 값(date)이 있다면 그 값은 먼저 메모리에 기록 되있어야 함
- 가독성이 좋아짐
- 재사용성 증가로 인한 코드량 감소, 유지보수 용이
✔ 변수의 명명 규칙
- 대소문자가 구분되며 길이 제한이 없다.
- 예약어를 사용하면 안된다. // ex) true, final, String
- 숫자로 시작하면 안된다. // ex) age1은 가능하지만 1age는 불가능
- 특수문자는'_'와 '$'만을 허용한다.
- 여러 단어 이름은 단어의 첫글자를 대문자로 한다.
단, 첫 시작 글자는 소문자로 하는 것이 관례이다. ex) userName
🔯 필드 선언
클래스의 필드(field)란 클래스에 포함된 변수(Variable)를 말한다.
⭐ 필드 선언
ⓛ 제어자 | ② 데이터 타입 | ③ 필드명 |
public, private, (default), protected | int, String, double, char, boolean ... | 필드명 |
필드를 선언할 때 접근 제한자와 final, static을 사용할 수 있다 |
필드가 저장하는 값의 데이터 타입을 지정하며 절대 생략 불가능 | 필드명은 소문자로 시작함 |
- 필드 선언은 블록{ } 어디서든 존재할 수 있다. - 생성자 선언과 메소드 선언의 앞, 뒤 어디서든 필드 선언이 가능하다. - 하지만 생성자와 메서드 블록{ } 내부에 선언된 것은 필드가 아닌 지역변수가 된다 |
⭐ 변수의 종류
class Number { static int two; //① 클래스 변수 (static 변수, 공유 변수) int one; //② 인스턴스 변수 void Method01 (int four) { //③ 매개 변수 int three; //④ 지역 변수 } }
변수 종류 | static | 선언위치 | 메모리 영역 | |
①클래스 변수 (필드 멤버변수) |
넣음 | 필드 | 클래스 영역 (static영역) |
⦁ 객체의 속성을 표현 ⦁ 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우, 클래스 변수로 선언해야 한다. |
②인스턴스 변수 (필드 멤버변수) |
안넣음 | 필드 | 클래스 영역 (heap영역) |
⦁ 객체의 속성을 표현 ⦁ 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다. ⦁ 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스변수로 선언한다. |
③매개 변수 | 메서드, 생성자 괄호 내부 ( ) |
⦁ 객체의 속성을 표현메서드 선언 시 ( )안에 선언되는 변수. ⦁ 객체의 속성을 표현메서드를 실행할 때 필요한 데이터를 외부에서 받기 위해 정의 |
||
④지역 변수 | 메서드, 생성자, 초기화, 반복문(for,while) 중괄호 내부 { } |
⦁ 메서드에서 필요한 값을 잠시 저장할 목적으로 선언 ⦁ 메소드 내에 선언되어 메소드 내에서만 사용 가능하다 ⦁ 메소드가 종료되면 소멸되어 사용할 수 없다. |
▶ 필드 예시
더보기
package java02; public class FieldExam { // [전근제한자] [예약어] 자료형 변수명[=초기값]; // 클래스 변수(모든 객체가 공통적으로 속성을 가질때 // 사용을 하고 생성할때 메모리 영역에 같이 생성되기 때문에 // 꼭 필요한 공통적인 속성을 가진 변수에 사용을 해야합니다.) public static int var1; //멤버 변수(인스턴스 변수) //각각의 객체(인스턴스)마다 개별적인 속성을 가져야할떄 //멤버 변수(인스턴스 변수)를 사용하세 됩니다. public int var2; private int var3; //캡슐화 원칙으로 private사용 int var4; //접근제한자 생략 default 접근제한자 //생성자 public FieldExam() { String var5="생성자 지역변수"; //지역변수 System.out.println(var5); } //초기화 블럭 { String var6="초기화블럭 지역변수"; //지역변수 System.out.println(var6); } //메소드 public String method() { String var7 = "메소드안의 지역변수"; //지역변수 return var7; } public static String method1() { String var8 = "static안의 지역변수"; //지역변수 return var8; } }
▶ 필드 (Field) - 클래스 초기화 블럭
package java02; public class BlockExam { public static String name="하이드"; public BlockExam() { System.out.println("생성자 영역"); } int age =19; static{ System.out.println("static block 영역"); name="하이드"; } { } { System.out.println(age); System.out.println("인스턴스 블럭1"); this.age = 23; System.out.println(age); } { System.out.println("인스턴스 블럭2"); } }
▶ 필드 예시 실행 Run
package java01; import java02.BlockExam; import java02.FieldExam; public class Run { public static void main (String[] args) { // 클래스 변수는 사용할려고 하면 클래스명을 써주고 //.을 입력 후에 해당 클래스변수, 메소드를 사용할 수 있습니다. System.out.println(FieldExam.var1); System.out.println(FieldExam.method1()); FieldExam fe=new FieldExam(); System.out.println(fe.var2); System.out.println(fe.method()); BlockExam be = new BlockExam(); System.out.println(be.name);
'Language > Java' 카테고리의 다른 글
Class - 메소드 (Method) (0) | 2022.01.04 |
---|---|
Class - 생성자 (Constructor) (0) | 2022.01.03 |
package와 import (0) | 2022.01.02 |
클래스, 객체, 인스턴스 개념 (0) | 2022.01.02 |
배열 복사 (0) | 2021.12.29 |