[자바JAVA] 변수1 - 변수, 기본형
변수(變數, 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 Type Default value(for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String(or any object) null boolean false 로컬 변수는 약간 다르며, 기본값을 할당하지 않음. 따라서 선언할 때 초기화할 것.
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