본문 바로가기
Java 배우기

Variables 변수

by 노화방지 Anti-aging Hairstyle 2016. 1. 5.
반응형

변수   Variables


앞 단원에서 배운 대로, 객체는 필드(fields) 안에 그 상태(state)를 저장합니다.

As you learned in the previous lesson, an object stores its state in fields.

int cadence = 0;
int speed = 0;
int gear = 1;


Object란 무엇인가? 논의에서 fields가 소개되었지만 아직도 미진할 것입니다: 
field의 이름을 짓는 규칙 및 협약은 무엇인가?
int 이외에 다른 data types으로 무엇이 있는지? 
fields들이 선언되면 초기화를 해야 하는지?
필드들이 명시적으로 초기화되지 않으면 필드에 기본 값이 할당되는지? 
이 단원에서 이러한 질문에 답을 만들어보는데, 그 전에 알아야 할 몇 가지 기술적 distinctions이 있습니다.
자바 프로그래밍 언어에서는, 용어 "field"와 "variable"이 모두 사용됩니다; 이들 모두 동일한 것을 가리키기 때문에 새로운 개발자들이 혼동을 느끼게 됩니다.

자바 프로그래밍 언어는 다음과 같은 종류의 변수들을 정의합니다:
The What Is an Object? discussion introduced you to fields, but you probably have still a few questions, such as: What are the rules and conventions for naming a field? Besides int, what other data types are there? Do fields have to be initialized when they are declared? Are fields assigned a default value if they are not explicitly initialized? We'll explore the answers to such questions in this lesson, but before we do, there are a few technical distinctions you must first become aware of. In the Java programming language, the terms "field" and "variable" are both used; this is a common source of confusion among new developers, since both often seem to refer to the same thing.

The Java programming language defines the following kinds of variables:

  • 인스턴스 변수 (Non-Static 필드)  기술적으로 말해서, 객체들은 각자의 상태를 "non-static 필드"에 저장하는데, 즉, 키워드 static 없이 선언된 필드에 저장합니다.
    Non-static 필드
    는 또한 인스턴스 변수 라고도 하는데, 그 이유는 인스턴스 변수의 값이 클래스의 각 인스턴스 (다른 말로, 각 객체)마다 유일하기 때문입니다; 어떤 한 자전거의 currentSpeed는 다른 자전거의 currentSpeed와 전혀 다르기 때문입니다.
    Instance Variables (Non-Static Fields)
     Technically speaking, objects store their individual states in "non-static fields", that is, fields declared without the static keyword. Non-static fields are also known as instance variables because their values are unique to each instance of a class (to each object, in other words); the currentSpeed of one bicycle is independent from the currentSpeed of another.
  • Class 변수 (Static 필드)  class 변수static modifier가 수반되어 선언된 모든 필드입니다; 이것은 클래스가 몇 번 인스턴스화 되든 관계없이, 정확하게 이 변수는 1개 카피 만이 존재한다고 컴파일러에게 말합니다.
    특정 종류의 자전거의 기어 갯수를 정의하는 필드는 
    static 으로 표시될 수 있는데, 그 이유는 개념적으로 동일한 갯수의 기어가 모든 인스턴스에 적용되기 때문입니다.
    코드 
    static int numGears = 6; 가 그러한 static 필드를 생성할 것입니다.
    추가적으로,
    기어의 갯수가 결코 변치 않을 것임을 가리키기 위하여 키워드 final을  추가할 수 있습니다.
    Class Variables (Static Fields)
     A class variable is any field declared with the static modifier; this tells the compiler that there is exactly one copy of this variable in existence, regardless of how many times the class has been instantiated. A field defining the number of gears for a particular kind of bicycle could be marked as static since conceptually the same number of gears will apply to all instances. The code static int numGears = 6; would create such a static field. Additionally, the keyword final could be added to indicate that the number of gears will never change.
  • Local 변수  객체가 필드 안에 상태를 저장하는 방법과 유사하게, 메소드도 로컬 변수 안에 그 임시 상태를 가끔 저장합니다.
    로컬 변수를 선언하는 구문규칙은 필드 선언과 유사합니다 (예, 
    int count = 0;).
    변수를 로컬로 지정하는 특별한 키워드는 없습니다;
    변수가 선언된 장소에 따라 로컬 변수 여부가 전적으로 결정되는데 — 로컬 변수는 메소드의 중괄호 사이에 있습니다.
    그처럼, 로컬 변수들은 그들이 선언된 메소드에게만 보입니다; 클래스의 나머지에서는 로컬 변수에 접근할 수 없습니다.

    Local Variables
     Similar to how an object stores its state in fields, a method will often store its temporary state in local variables. The syntax for declaring a local variable is similar to declaring a field (for example, int count = 0;). There is no special keyword designating a variable as local; that determination comes entirely from the location in which the variable is declared — which is between the opening and closing braces of a method. As such, local variables are only visible to the methods in which they are declared; they are not accessible from the rest of the class.
  • 패러미터  클래스 Bicycle과 "Hello World!" application의 main 메소드에서 이미 패터미터의 예제를 본 적이 있습니다.
    main method의 시그니처가 public static void main(String[] args)임을 기억해내세요.
    여기서,
    args 변수가 이 메소드의 패러미터입니다.
    중요하게 기억해야 할 사항은 패러미터들은 항상 "
    필드"가 아니고 "변수(variables)"로 분류된다는 사실입니다.
    패러미터는 이 교본의 후반 부에서 배울 다른 parameter-accepting constructs(생성자 및  exception handlers와 같은)에도 적용됩니다.

    Parameters
     You've already seen examples of parameters, both in the Bicycle class and in the main method of the "Hello World!" application. Recall that the signature for the main method is public static void main(String[] args). Here, the args variable is the parameter to this method. The important thing to remember is that parameters are always classified as "variables" not "fields". This applies to other parameter-accepting constructs as well (such as constructors and exception handlers) that you'll learn about later in the tutorial.

필드와 변수를 논의할 때, 이 교본의 나머지는 다음과 같은 일반적 지침을 사용합니다. 

"일반적 필드(fields in general)" (로컬 변수와 패러미터는 제외)을 얘기할 때는, 단순하게 "fields" 라고 말할 것입니다.
논의가 "all of the above"에 적용될 때는, "변수들" 이라고 단순히 말할 것입니다.
문맥상  구분이 필요한 경우에는, 특정 용어 (static field, local variables 등)를 적절히 사용할 것입니다.
또한 가끔씩은 "멤버" 라는 용어도 사용할 것입니다.
어떤 타입의 필드, 메소드 및 nested 타입은 모두
members라고 합니다.
Having said that, the remainder of this tutorial uses the following general guidelines when discussing fields and variables. If we are talking about "fields in general" (excluding local variables and parameters), we may simply say "fields". If the discussion applies to "all of the above", we may simply say "variables". If the context calls for a distinction, we will use specific terms (static field, local variables, etc.) as appropriate. You may also occasionally see the term "member" used as well. A type's fields, methods, and nested types are collectively called its members.

Naming

Every programming language has its own set of rules and conventions for the kinds of names that you're allowed to use, and the Java programming language is no different. The rules and conventions for naming your variables can be summarized as follows:

  • Variable names are case-sensitive. A variable's name can be any legal identifier — an unlimited-length sequence of Unicode letters and digits, beginning with a letter, the dollar sign "$", or the underscore character "_". The convention, however, is to always begin your variable names with a letter, not "$" or "_". Additionally, the dollar sign character, by convention, is never used at all. You may find some situations where auto-generated names will contain the dollar sign, but your variable names should always avoid using it. A similar convention exists for the underscore character; while it's technically legal to begin your variable's name with "_", this practice is discouraged. White space is not permitted.
  • Subsequent characters may be letters, digits, dollar signs, or underscore characters. Conventions (and common sense) apply to this rule as well. When choosing a name for your variables, use full words instead of cryptic abbreviations. Doing so will make your code easier to read and understand. In many cases it will also make your code self-documenting; fields named cadencespeed, and gear, for example, are much more intuitive than abbreviated versions, such as sc, and g. Also keep in mind that the name you choose must not be a keyword or reserved word.
  • If the name you choose consists of only one word, spell that word in all lowercase letters. If it consists of more than one word, capitalize the first letter of each subsequent word. The names gearRatio and currentGear are prime examples of this convention. If your variable stores a constant value, such as static final int NUM_GEARS = 6, the convention changes slightly, capitalizing every letter and separating subsequent words with the underscore character. By convention, the underscore character is never used elsewhere.


반응형

'Java 배우기' 카테고리의 다른 글

Arrays 배열  (0) 2016.01.05
Primitive Data Types 원시 데이터 타입  (0) 2016.01.05
Lesson: Language Basics 단원: 언어 기초  (0) 2016.01.05
What Is a Package? 패키지란?  (0) 2016.01.05
What Is an Interface? 인터페이스란?  (0) 2016.01.05

댓글