반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 학습하기 #봇 학습 #테스트 방법 #디버깅
- 생성자 #메소드랑 햇갈려 #생성자랑 메소드는 다른거지롱 #객체생성 #new 연산자 #인스턴스화 #인스턴스 생성
- RPA #실습 #라이브러리 #RPA라이브러리 #task #Process #Task #Assign #변수
- 열거형 #enum #JDK5
- For #Loop #반복문
- #시그모이드 #광주인공지능학원 #스인개
- 연산자 #일치연산자 #기본연산자 #불일치연산자
- 메소드 오버로딩 #Method Overloading #오버로딩 #중복정의 #Overloading
- VDI #DRM #디지털 저작권 관리 #가상 데스크톱 인프라 #용어 #IT용어 #개발자 #신입
- String Class #String #Class
- RPA #실습 #라이브러리 #RPA라이브러리 #task #Process #Task
- #Brity #BrityRPA #FlowControl
- Java #JAVA #자바 #java기초 #java입문 #java #자바 개념 #programming #공부 #개발 공부 #코드 정리 #코딩테스트 #알고리즘
- 참조(Reference)타입 #클래스
- field #Field #Method #method #필드 #속성 #메소드 #행동 #객체 #Class구성요소
- 변수의 범위 #Scope #scope #Static #static #지역변수 #전연변수 #global #local
- 스마트인재개발원 #광주인공지능학원 #JavaScript #JS #형변환 #자바스크립트 #Web #back-end #front-end
- Class #클래스 #Java #JAVA #자바 #java기초 #java입문 #java #자바 개념 #programming #공부 #개발 공부 #코드 정리 #코딩테스트 #알고리즘
- Brity Assistant #대화분석 #설계 #ChatBot #변수 #학습 #대화학습 #동의어 #동의어 처리 #단어사전
- 스마트인재개발원 #deep learning #MLP #다층 레이어 퍼셉트론 #퍼셉트론 #선형분류 #다중 선형분류 #AI #머신러닝 #뉴런 #신경망
- 스마트인재개발원 #스마트인재캠퍼스 #MLP #이미지분석 #AI #인공지능 #머신러닝 #딥러닝
- 대화설계 #시나리오 설계 #Flowchart #플로우차트 작성
- RPA #실습 #라이브러리 #RPA라이브러리 #task #Process #Task #Script #ExecuteScript
- Brity #BrityRPA #FlowControl
- this. #this #this키워드 #객체 자신 참조 #필드호출 #메소드호출
- SQLD #DDL #DML #DCL #TCL #DB #SQLP #DataBase #자격증 # IT #명령어 #SQL #쿼리
- 순전파 #역전파 #MLP
- 스마트인재개발원 #광주인공지능학원 #JavaScript #Web #Java
- Class #class #reference
- Brity #Brity Assistant #ChatBit #챗봇 #자연어 처리 #Brity RPA #삼성SDS #대화분석 #대화설계
Archives
- Today
- Total
코딩몬
[Java] 변수의 범위(Scope)와 static 본문
반응형
변수의 범위(Scope)
: 프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가지며, 이를 변수의 스코프(Scope)라고 한다.
변수가 선언된 블럭이 그 변수의 사용범위 즉, Scope 이다.
public class ValableScopeExam{
int globalScope = 10; // 인스턴스 변수
public void scopeTest(int value){
int localScope = 10;
System.out.println(globalScope);
System.out.println(localScpe);
System.out.println(value);
}
}
- 클래스의 속성으로 선언된 변수 globalScope 의 사용 범위는 클래스 전체 이다.(global변수, 전역변수)
- 매개변수로 선언된 int value 는 블럭 바깥에 존재하기는 하지만, 메서드 선언부에 존재하므로 사용범위는 해당 메소드 블럭내이다.
- 메소드 블럭내에서 선언된 localScope 변수의 사용범위는 메소드 블럭내이다.(local변수, 지역변수)
* Static 한 Method에서 사용하기
Main Method와 같이 Static한 Method에서는 같은 Class 안에 있음에도 불구하고 globalScope변수를 사용할 수 없다.
즉, Static 한 Method에서는 Static하지 않은 Field를 사용할 수 없다.
(단, Static 한 Field는 Static한 메소드와 Static하지 않은 메소드 둘 다에 사용 가능하다.)
public class VariableScopeExam {
int globalScope = 10;
public void scopeTest(int value){
int localScope = 20;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
public static void main(String[] args) {
System.out.println(globalScope); //오류
System.out.println(localScope); //오류
System.out.println(value); //오류
}
}
* Static
- main 메소드는 static 이라는 키워드로 메소드가 정의되어 있다. 이런 메서드를 static 한 메소드 라고 한다.
- static한 필드(필드 앞에 static 키워드를 붙힘)나, static한 메소드는 Class가 인스턴스화 되지 않아도 사용할 수 있다.
public class VariableScopeExam {
int globalScope = 10;
static int staticVal = 7;
public void scopeTest(int value){
int localScope = 20;
}
public static void main(String[] args) {
System.out.println(staticVal); //사용가능
}
}
- 즉, static하게 선언된 변수는 new 키워드를 통해 인스턴스화 하지 않으므로, 값을 저장할 수 있는 공간이 하나만 생성된다. (인스턴스가 여러개 생성되어도 static한 변수는 하나다.)
- Static한 Method 에서 Static하지 않은 메소드를 사용하려면 객체를 생성하고 사용한다.
ValableScopeExam v1 = new ValableScopeExam();
ValableScopeExam v2 = new ValableScopeExam();
v1.golbalScope = 20; // static X 변수
v2.golbalScope = 30;
System.out.println(v1.golbalScope); //20 이 출력된다.
System.out.println(v2.golbalScope); //30이 출력된다.
v1.staticVal = 10; // static 변수
v2.staticVal = 20;
System.out.println(v1.statVal); //20 이 출력된다.
System.out.println(v2.statVal); //20 이 출력된다.
staticVal은 static한 변수 이므로, 맨 마지막 값인 20의 주소를 레퍼런스변수 v1, v2가 가리킨다.
반응형
'Java > Java 기초' 카테고리의 다른 글
[Java] 생성자 (0) | 2021.10.21 |
---|---|
[Java] 열거형(enum) (0) | 2021.10.21 |
[Java] Class 의 구성요소 필드(Field), 메소드(Method) (0) | 2021.10.21 |
[Java] String Class (0) | 2021.10.20 |
[Java] Class (0) | 2021.10.20 |
Comments