자바/이론(Theory)

[자바JAVA] 변수1 - 변수, 기본형

피톤치즈 2018. 10. 5. 17:07
반응형
Java 변수-기본형

변수(變數, Variables)

  • 변수[變數, Variables]란, 수학적 의미에서는 어떤 관계나 범위 안에서 여러 가지 값으로 임의로 변할 수 있는 수. (출처 : 다음사전. http://dic.daum.net/word/view.do?wordid=kkw000110448&supid=kku000137078)

  • 거의 모든 프로그램 언어에서는 이 변수라는 개념이 중요하고 이걸을 잘 알고 가야함.

  • 자바 프로그래밍에서는 변수를 크게 4가지로 정의 (참고로 바로 밑에 설명은 약간 어려우니 이 이후의 설명들을 다 본 후에 다시 이해하거나 책, 인터넷등에서 기존적인 자료형과 Object에 대해 공부 한 후에 보는 것이 좋음.)

    • Instance Variables (Non-Static Fields)

      • 인스턴스 변수는 object에 개별적으로 선언된 변수를 말하고 static으로 선언 되지 않은 것을 말한다.
    • Class Variables (Static Fields)

      • 클래스 변수는 어떤 필드에서 static으로 선언된 변수를 의미한다.
    • Local Variables

      • 로컬 변수는 필드에서 오브젝트가 상태를 저장하는 것
      • 간단히 말하면 int A = 0; 과 같이 여기서 A는 로컬변수가 되는 것이고, 그 로컬을 나누는 것은 '{', '}' 이고(흔히 메소드로 칭해지는 부분) 그 외의 로컬에서는 이 변수를 사용할 수 없다.
    • Parameters

      • 파라미터는 변수가 불러와지는 것, 소환되는것, 값을 가지고 오는 것 등으로 이해할 수 있다.(JAVA에서도 명확하게 글이 안써있...ㅡㅡ)
      • 이전글의 튜토리얼에서 main메소드에서 public static void main(String[] args)게 사용하며 여기서 args가 파라미터다.
      • 파라미터는 필드가 아닌 변수임.
    • 자세한 설명은 후에.....

  • 변수는 오브젝트로도 선언할 수 있고 자료형으로도 선언할 수 있다.

  • 모든 변수는 이름이 있으며, 이름에 대한 규칙이 있다.

    • 대소문자 구분
    • '$' , '_'로 시작하는 유니코드 및 숫자의 무한 길이. 하지만 '$', '_'로 시작하거나 사용하지 않는 것이 관례, '_'는 예외적으로 사용하는 경우가 있음
    • 관례적으로 약어를 사용하지 않는 것이 좋음(GEAR -> G, BYCLE -> B 이런식...)
    • 예약어는 변수이름으로 사용하지 말아야함(int int = 10; 이런식..)
    • 참고로 해당 프로그래머들간의 일종의 관례가 있고 나름의 법칙이 있으므로 혼자 공부할때는 크게 상관없으나 알고 있다면 따라서 사용해주는 것이 좋음.

 

기본형 (Primitive Data Types)

  • 자바 프로그래밍 언어는 모든 변수는 사용하기 전에 선언해야만 하며, 지정된 유형(위의 예약어에 포함)이 있다.

byte

  • 부호가 있는 8비트의 정수를 표현
  • -128 ~ 127 (-2^8 ~ 2^8 -1)

 

short

  • 부호가 있는 16비트의 정수를 표현
  • -32,768 ~ 32,767 (-2^16 ~ 2^16 - 1)

 

int

  • 부호가 있는 32비트의 정수를 표현
  • –2,147,483,648 ~ 2,147,483,647 (-2^32 ~ 2^32 - 1)

 

long

  • 부호가 있는 64비트의 정수를 표현
  • -2^64 ~ 2^64 - 1

 

float

  • 32비트의 실수를 표현(IEEE 754)
  • 이것은 통화와 같이 정확한 값을 가져야하는 데이터에서는 사용하지 말것.

 

double

  • 64비트의 실수를 표현(IEEE 754)
  • 이것은 통화와 같이 정확한 값을 가져야하는 데이터에서는 사용하지 말것.

 

boolean

  • true와 false 값만을 가짐
  • 1비트의 정보를 가지고 있으나 사이즈는 정해지지 않음.

 

char

  • 16비트의 유니코드 문자를 표현
  • 0~65,535 를 가짐.

 

etc.

  • 위의 8가지 외에도 문자열은 기본 클래스를 통해 제공( java.lang.String )

 

Default value

  • 선언시 모든 값을 초기화 할 필요가 없고 각각의 유형에 따른 기본값이 있다.

  • Data TypeDefault value(for fields)
    byte0
    short0
    int0
    long0L
    float0.0f
    double0.0d
    char'\u0000'
    String(or any object)null
    booleanfalse
  • 로컬 변수는 약간 다르며, 기본값을 할당하지 않음. 따라서 선언할 때 초기화할 것.

 

Literals

  • Literal : 리터럴은 정보-통신분야에서 사용되는 용어로 '프로그램 작성 언어에서 직접 값을 나타내는 자구 단위. 예를 들면, 14는 실정수 14를 나타내고, 에이피아르아이엘(APRIL)은 문자열 에이피아르아이엘(APRIL)을 나타내며, 3.0005E2는 수 300.05를 나타낸다. ⇒규범 표기는 미확정이다.' 출처 : 다음 사전 http://dic.daum.net/word/view.do?wordid=kkw000502949&supid=kku010295478

    • 자구 단위 : 원시 프로그램 속의 의미를 갖는 최소의 문법 단위의 총칭. 어휘 단위라고도 한다. 식별자(identifier), 예약어(reserved word), 상수, 연산자, 구획 기호 등을 가리킨다. 출처 : 다음 백과 http://100.daum.net/encyclopedia/view/156XX52206051
  • 위에 거론된 기본형의 변수를 선언할 때 new를 사용하지 않는다.

  • 기본형은 내장된 특수 데이터 유형이다.

  • 기본형은 오브젝트가 아니다.

 

integer literals

  • long 유형의 리터럴은 숫자 끝에 L 혹은 ㅣ을 붙여준다.

  • 소문자 l은 숫자 1과 구분하기 어렵고 혼돈을 주기 때문에 가급적 L을 사용하는 것이 좋다.

  • 정수 리터럴은 10진수, 16진수, 2진수로 표현할 수 있다.

    • // 10진수로 26 int decVal = 26;
    • // 16 진수로 26 int hexVal = 0x1a;
    • // 2진수로 26 int binVal = 0b11010;

 

floating-point literals

  • 실수형 리터럴은 float 형의 경우 숫자 끝에 F 혹은 f를 붙여야 한다.

  • 그렇지 않을 경우 그 실수는 double 형으로 인식될 수 있다.

  • 실수의 경우 E 혹은 e를 사용할 수 있다.

  • double형의 경우 D나 d는 사용가능하나 생략할 수 있다.

    • double d1 = 123.4;
    • double d2 = 1.234e2;
    • float f1 = 123.4f;

 

character and string literals

  • char와 string 형의 리터럴은 모든 유니코드(UTF-16) 문자가 포함될 수 있다.

  • 편집기 및 파일 시스템에 따라 사용할 수 있는 문자가 있으니 주의.

  • 자바에서는 몇가지 특수키들을 지원한다.

    • \b (backspace)
    • \t (tab)
    • \n (line feed)
    • \f (form feed)
    • \r (carriage return)
    • \" (double quote)
    • \' (single quote)
    • \\ (backslash).
    • null

 

Using Underscore Characters in Numeric Literals

  • Java SE 7 이상에서는 숫자사이에 '_' 를 사용할 수 있다.

  • 숫자가 많거나 숫자 그룹을 구분하여 코드의 가독성을 높일수 있다.

    • 잘못된 사용의 예 float pi1 = 3_.1415F; float pi2 = 3._1415F; long socialSecurityNumber1 = 999_99_9999_L; int x1 = 52_; int x2 = 0_x52; int x3 = 0x_52; int x4 = 0x52_;
    • 사용 가능의 예 int x1 = 5_2; int x2 = 5_______2; int x3 = 0x5_2; long creditCardNumber = 1234_5678_9012_3456L; long socialSecurityNumber = 999_99_9999L; float pi = 3.14_15F; long hexBytes = 0xFF_EC_DE_5E; long hexWords = 0xCAFE_BABE; long maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; long bytes = 0b11010010_01101001_10010100_10010010;

 

본 문서는 아래 사이트를 기반으로 작성되었습니다.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

반응형