생활코딩 - Java(유효범위)

2024. 3. 26. 22:25·Java & Spring/Java

□ 유효범위(Scope)

 

public static void main(String[] args) {

      for (int i = 0; i < 5; i++) {

           a();

           System.out.println(i);

     }

위 메소드에서 i = 0부터 시작해 i < 5 인경우 i에 +1을 하며  System.out.println(i); 을 반복하는 for문이다.

그런데 메소드 a();로 인해 i = 0 이 반복되어 문제가 발생하지않는 이유는

a()라는 메소드 안에서 int i = 0;이라는 변수가 정의되어있기때문에 a()밖으로는 영향을 못미치기 때문이다.

→ int i = 0;의 경우 a()라는 메소드 안이 유효범위(scope)이다.

 

 

※ 두 코드의 차이점 : i = 0; 은 변수를 할당 한 것이고 int i = 0;은 변수를 선언 한 것이다.
                                 변수를 선언하게되면 그 변수의 유효범위도 지정하게 되는 것이다.

- 오른쪽 코드에서 클래스(class)바로 아래 선언되는 static int i;를 전역변수

- 왼쪽 코드에서 메소드 a( )안에서 선언되는 int i = 0;을 지역변수 라고 한다.

 

□ 다른 예시(정적인 유효범위)

지역변수 title이 a()안에 선언됨
지역변수 i가 for문 안에서 선언됨
int i = 10;의 경우 a()의 지역변수

- int i = 10;의 경우 a()의 지역변수이므로 전역변수 인 static int i = 5; 가 출력된다.

 

□ .this

위 코드의 경우 System.out.println(v); 은 지역변수인 20을  System.out.println(this.v); 은 전역변수인 10을 출력한다.

.this의 경우 전역변수를 호출한다.

 

 

 

출처 : 생활코딩 유튜브 : 
https://www.youtube.com/watch?v=TEyLPQeo6pc&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=70

'Java & Spring > Java' 카테고리의 다른 글

생활코딩 - Java(abstract,final,interface)  (0) 2024.04.03
생활코딩 - Java(접근 제어자)  (0) 2024.04.02
생활코딩 - Java(객체지향프로그래밍)  (0) 2024.03.25
생활코딩 - Java(입력과 출력)  (0) 2024.03.25
생활코딩 - Java(메소드)  (0) 2024.03.23
'Java & Spring/Java' 카테고리의 다른 글
  • 생활코딩 - Java(abstract,final,interface)
  • 생활코딩 - Java(접근 제어자)
  • 생활코딩 - Java(객체지향프로그래밍)
  • 생활코딩 - Java(입력과 출력)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java 에라토스테네스의 체
    java
    java 멤버
    java 메서드
    java arrays.copyofrnage()
    Java 생성자
    java super
    데이터 크기
    java 유클리드 호제법
    java기초
    Java this
    java enhance switch
    프로그래머스 java 기초트레이닝
    프로그래머스 java 기초 트레이닝
    개발로드맵
    java 제어자
    java two-pointer
    데이터 타입
    java 세수의합
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
생활코딩 - Java(유효범위)
상단으로

티스토리툴바