English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Java에서의 클래스는 고정(클래스), 인스턴스, 지역 변수 등 세 가지 변수를 가지게 됩니다.
인스턴스 변수-이 변수들은 클래스의 인스턴스(객체)에 속합니다. 이들은 클래스 내에서 메서드 외에 선언되며, 클래스를 인스턴스화할 때 초기화됩니다. 이들은 특정 클래스의 모든 메서드, 생성자 또는 블록에서 접근할 수 있습니다.
클래스/고정 변수-클래스/고정 변수는 클래스에 속하며, 인스턴스 변수와 마찬가지로, 클래스 내에서 메서드 외에 선언되지만 static 키워드를 사용하여 선언됩니다.
그들은 컴파일 시에 접근할 수 있으며, 인스턴스화 전에 접근할 수 있습니다./클래스를 인스턴스화하지 않고 접근할 수 있으며, 전체 클래스에서는 하나의 고정 필드 복사본만 사용할 수 있습니다. 즉, 고정 필드의 값은 모든 객체에서 일관되게 동일합니다. static 키워드를 사용하여 고정 필드를 정의할 수 있습니다.
지역 변수-이 변수들은 메서드에 속합니다/블록/생성자에서 선언/정의. 이 변수들의 범위는 메서드(또는 블록 또는 생성자) 내에 위치하며 실행后被 소멸됩니다.
따라서 try 블록에서 변수를 선언하면(이는 어떤 블록에서나 마찬가지입니다), 그 변수는 해당 블록의 로컬에 위치하며, 해당 블록이 실행된 후에 변수의 생명주기가 만료됩니다. 따라서 외부의 블록에서 선언된 어떤 변수도 접근할 수 없습니다.
아래의 예제에서는 result라는 변수를 선언하고 finally 블록에서对其进行 접근 시도하면, 컴파일 시 컴파일 시간 에러가 발생합니다.
import java.util.Arrays; import java.util.Scanner; public class ExceptionExample { public static void main(String [] args) { Scanner sc = new Scanner(System.in); int[] arr = {10, 20, 30, 2, 0, 8}; System.out.println("배열: "+Arrays.toString(arr)); System.out.println("이 배열에서 분수와 분수자를 선택하세요(0에서 입력 위치까지)\" 5)\ int a = sc.nextInt(); int b = sc.nextInt(); try { int result = (arr[a])/(arr[b]); } catch(Exception e) { System.out.println("에러 발생\); } finally { System.out.println("이제 최종 블록\); System.out.println("Result \""+arr[a]+"/"+arr[b]+: ""+result); } } }
출력 결과
ExceptionExample.java:21: error: simbol을 찾을 수 없음 System.out.println("Result \""+arr[a]+"/"+arr[b]+: ""+result); ^ 변수: result 위치: class ExceptionExample 1 에러