[Java] 유효범위(Scope)

2022. 1. 17. 21:13·TIL/Java
728x90
반응형

유효범위란?

변수를 전역변수와 지역변수로 나눠서 좀 더 관리하기 편리하도록 한 것 이다.

 

 

ScopeDemo.class

 

 

아래 코드에서 a 메소드 또는 for 문 안에 있는 i를 int i로 선언하게 되면 무한루프에 빠지는 현상을 해결할 수 있다.

 

ScopeDemo2.class

 

 

아래 ScopeDemo4 클래스에서 10번 째 줄 코드가 오류가 나는 이유는 title 이라는 변수가 a 라는 메소드에서만 사용되는 지역변수로만 선언이 되어있고 전역변수로 선언된 title 변수가 없기 때문이다.

만약, for문이 있는데 for문 안에서 int i를 선언하지 않고 'for( i = 0; i < 5; i++)' 이런식으로 선언했다면 전역변수가 무조건적으로 있어야 한다.

 

ScopeDemo4.class

 

 

아래 ScopeDemo6 클래스를 실행하면, 결과는 5가 나온다.

그 이유는 a 메소드는 a 메소드에서 사용하는 지역변수 i를 10으로 선언하고 b 메소드를 호출한다.

b 메소드를 보면 i를 출력하라고 선언하였는데 b 메소드 안에서 선언된 지역변수가 없기때문에 자연스럽게 전역변수(static int i =5)의 값을 가져오게 된다.


b의 유효범위는 자기 자신이거나 전역변수 둘 중에 하나만 접근할 수 있다. -> 정적인 유효범위(static scope)

 

ScopeDemo6.class

 

 

 

아래 ScopeDemo7 클래스를 보면,

C, C2, C3 클래스를 생성하고 생성자를 통해서 c1, c2, c3를 선언하여 각 C 클래스 안에 있는 m 메소드를 호출하고 있다.

c1은 m 메소드가 class C에서 선언한 v 변수의 값(10)을 가지고 와서 출력 결과는 10이 된다.

c2는 m 메소드 내에 선언된 지역변수 v의 값(20)을 가지고 와서 출력 결과는 20이 된다.

c3는 m 메소드가 class C에서 선언한 v 변수의 값(10)을 가지고 와서 출력 결과는 10이 된다.

왜냐하면 this를 사용하여 전역변수를 가져왔기 때문이다.

this 내용을 정리한 URL : https://yelin1217.tistory.com/46

 

[Java] this

this : 메소드에서 현재 인스턴스를 가리키는 역할을 한다. class Person { private String name; public Person(String pName) { name = pName; } public void sayHello() { System.out.println("Hi. My name is..

yelin1217.tistory.com

ScopeDemo7

728x90
반응형

'TIL > Java' 카테고리의 다른 글

[Java] 상속과 생성자  (0) 2022.01.18
[Java] 상속(Inheritance)  (0) 2022.01.18
[Java] 클래스 멤버와 인스턴스 멤버: 타입별 비교  (0) 2022.01.17
[Java] 연속적으로 값을 입력하기 / 파일 가져오기 (Scanner + While + File)  (0) 2022.01.15
[Java] main  (0) 2022.01.14
'TIL/Java' 카테고리의 다른 글
  • [Java] 상속과 생성자
  • [Java] 상속(Inheritance)
  • [Java] 클래스 멤버와 인스턴스 멤버: 타입별 비교
  • [Java] 연속적으로 값을 입력하기 / 파일 가져오기 (Scanner + While + File)
야리니
야리니
오늘보다 내일 더 성장하는 개발자가 되기 위한 야리니 블로그입니다 :)
    반응형
    250x250
  • 야리니
    야리니의 step by step
    야리니
  • 링크

    • GitHub
    • Linkedin
  • 전체
    오늘
    어제
    • 분류 전체보기 (478)
      • TIL (379)
        • Java (97)
        • Kotlin (28)
        • JPA (16)
        • Spring (37)
        • Oracle (22)
        • JDBC (7)
        • Web(HTML, CSS, JS, jQuery) (90)
        • View Template (31)
        • AWS (7)
        • HTTP (7)
        • CS (5)
        • Linux, Unix (2)
        • Python (20)
      • Trouble Shooting(Error) (37)
      • Algorithm (15)
      • Git,GitHub (8)
      • Diary (24)
      • 독서 (9)
      • Etc (6)
        • Mac (1)
        • 학원준비과정 (2)
  • 블로그 메뉴

    • 방명록
    • 태그
  • 공지사항

    • 안녕하세요 :)
  • 인기 글

  • 태그

    Kotlin
    oracle
    java
    코틀린
    국비지원학원
    HTML
    백엔드 개발자
    java기초
    쌍용교육센터
    CSS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
야리니
[Java] 유효범위(Scope)
상단으로

티스토리툴바