[1]변수(Variable)

변수의 분류 - 객체 변수/ 클래스변수 / 지역변수/ 인자형 변수 or 참조형 변수 / 기본형 변수




1. 객체형 변수 (Instance Variable) - non-static field

- 객체형 변수란 ? 클래스 안에 선언되어있는 변수로 [ 필드 혹은 멤버변수 ]라고 부른다. 

- 필드의 종류도 2가지가 있다. static이 붙어 있는 것과 static이 없는 것이다. 일반적으로 static이 안붙어 있는 것을 [ 필드 혹은 멤버변수 ]라고 한다.

- 클래스로 객체를 생성할 때마다, (객체.변수)로 사용할 수 있다.


2. 클래스 변수(Class Variable) - static field

 - 클래스 변수란 ? 클래스 안에 선언되어 있으면서 static이 붙어 있는 변수로 [ 스태틱 필드 ] 라고 부른다.

 - 클래스에만 하나가 존재하여 저장되는 변수로, 객체형변수와는 다르게, (클래스명.변수)로 사용하며,

   생성된 여러 객체에서도 호출이 가능하나 (객체.변수) but 클래스 안에 하나의 형태로 저장된다.


3. 지역변수(Local Variable)

 - 지역 변수란? 매쏘드()안에 존재하고 있기 때문에, 필드(클래스 안에 존재하는 변수)와 다르게, [반드시 초기화]를 해줘야한다.

 - 멤버변수라 불리는 필드는 초기화가 필요없다. 자동으로 초기화가 된다. 그러나 매쏘드()안에 있는 변수는 반드시 초기화를 해줘야한다


4. 인자형 변수(Parameter)

 - 인자형 변수란? 다른 언어에서는 argument라고도 불리며, 매쏘드()가 실행 될 때, 넘겨 받는 변수다. 


5. 변수의 이름 붙이기(naming) - 식별자(identifier) 규칙

 -  숫자로 시작할 수 없으나 영대 소문자나 숫자가 들어갈 수 있으며, 특수 문자 중 [ _ 와 $ ]를 넣을 수 있다.

 - 관례(convention) : 소문자로 시작하며, $는 사용하지 않으며, _를 쓸 경우에는 맨 앞에 잘 사용하지 않는다.

 ex> String name; (O) String 5name&;(X)  /  int powerPoint; (O) int _name;(세모)


6. 형태(Type)에 따른 구분

 (1) 참조형 변수(Reference Type Variable) : String  name; Test t; Object o; 등 앞글자가 대문자로 시작하여, 내부에 클래스를 가지고 있다.

 -> 필드와 매쏘드()가 사용 가능

 (2) 기본형 변수(Primitive Type Vairable) : int a; float f; char c; 등 소문자로 시작하며, 내부 클래스가 없다. 객체에 속하지 않는 것들임.


[2] 기본형 변수(8)와 참조형 변수

(1) 수치형 변수(6) : 기본형 변수 8가지 중 6가지는 수치를 나타내는 것으로, byte/ short/ int/ long 등 정수형 변수 와 

float/ double의 실수형 변수가 있다.

 - 순서대로 1/2/4/8 byte 와 4/8byte의 크기를 가진다.

 -  bit가 0,1로 이루어져있는데, 1byte는 8bit로 bit가 8개 있으므로, 0000 0000 ~ 1111 1111으로 구성 된다.

 -  byte의 8자리 중 첫번째 bit는 [부호비트]로 0은 양수, 1은 음수를 의미한다. 나머지 7자리의 bit가 숫자를 구성하므로  범위를 따지면 [ -2^7부터 ~ (2^7-1) ]로, 0을 양수에서 -1로 차지한다.

   ex> int는 4byte이므로, bit가 8 x 4 = 32 개 존재한다. 첫번재 부호비트를 제외하고 31자리의 bit가 숫자를 결정하므로, -2^31 ~ (2^31-1)의 범위를 가진다.


(2) 문자형 변수(char) : 문자 하나를 표현하는 것이다. 작은 따음표로 감싸서 문자 1개를 표현한다. ex>'가', 'a'

(3) 논리형 변수(boolean) : true or false를 의미한다.


(4)참조형 변수(String) : 문자의 집합로 큰 따옴표로 표시한다. "a가 b는 아니다"


- 기본형 변수들은 [기본값]을 가진다.

 byte, short, int 0 / long은 0L / float는 0.0f / double은 0.0d 가 기본값이다.

 char'\u0000'의 유니코드 값을 기본값으로 가진다.

 booleanfalse를 기본값으로 가진다.

- 모든 참조형 변수는 기본값이 null이다.


(5) 기본형 변수 표기법

 - 10진수 표기법 int a = 10;

 - 16진수 표기법(0x XXX형식으로 표기) : int a = 0xa; (a는 10을 의미한다)

    cf) 16진수는 0부터 9, A(10) ~ F(15)까지 총 16가지의 문자로 숫자를 표현하는 것을 말한다.

 - 2진수 표기법(0b XXXX형슥으로 표기) : int a = 0b1010;(1010은 2진수로 10을 의미한다.)

 - 실수 일반 표기법 : double d = 123.4;

   지수 일반 표기법 : double d = 1.234e2; (e2는 100을 곱하는 것을 의미한다. d에는 123.4가 들어간다)

 - 문자 표기법 : char 는 ''; / String은 "";

 - 유니코드(UTF-16) 표기법 : 모든 문자는 2byte로 표기가 가능하다. 한글 가 도 2byte이다. '가'의 유니코드 값은 AC00이라는 코드를 가진다. 이런 것들의 모임은 charSet이다.

    char c= '\uAC00';  String s= "\uAC00";

 - Escape Sequence(특수한 표기법, escape문자) : 

   \b (backspace), \t(tab), \n(line feed), \r(carriage return, 엔터키), \"(double quote, 쌍따옴표), \'(single quote,작은 따옴표), \\(back slash)

 - 언더바(_)문자 사용(se7부터 적용) : 숫자의 시작or끝에는 쓸 수 없고, 중간에 넣어서 구분을 위해서 넣어준다. ex> 전화번호, 카드번호 등등


[3] 배열(array)

 - 배열이란? 똑같은 형태의 변수들의 집합체로, 방번호가 붙은 호텔과 같은 개념이다.

 int[] a= new int[6];식으로 선언한다. 마지막의 6은 6개의 방을 만들어라는 의미이다. 

 - 방 번호를 index라 하는데 0부터 시작한다. 0부터 5번방까지 총 6개(length)의 배열이 만들어진 것이다.

 - int클래스x 대문자로시작x인 기본형 변수이므로, default값= 기본값을 0으로 다 가지고 있다. 만약 2번 방을 끄집어 내고 싶다면, 대괄호 a[2]로 끄집어 낸다.

 (1) 생성법은 3가지가 있다

int[] a = new int[6];  - int뒤에 바로 []를 넣어서, 우항에는 방의 번호를 집어넣는다.

int []a = {1, 3, 4, 5, 6, 3}; - 변수앞에 바로 []를 넣어서, 우항에는 값을 집어 넣어, 방번호를 간접적으로 만든다.

int a[] = new int[]{1,2,3,4,5,6}; - 변수뒤에 바로 []를 넣어서, 빈방과 값을 동시에 집어넣는다.


 (2) 2차원 배열 

int[][] a = new int[2][2]; - int뒤에 넣어서, 2차원 방번호를 집어넣는다.

int[][] a = { {1,2}, {3,4}}; - int뒤에 넣어서, 중괄호를 이중으로 해서 값을 집어넣는다.


  

[4] 실습

javase05 자바프로젝트를 만들고, 패키지명은 var, 클래스명은 TestVar, 메인함수까지 포함해서 만든다.


package var;


public class TestVar {

//클래스 안에 적었으니, static이 안붙은 [ 필드(field) 혹은 멤버변수 혹은 객체가 쓰는 객체형 변수 ] 혹은 static이 붙어 있는 [클래스 변수]가 될 수 있다.

String name; //static이 안붙어 있으면, 객체가 쓰는 변수로 [쓰는 곳에서는 클래스 객체가 필요하다! 메인함수에서 객체를 만들어서 써야한다] 

int height;

static int power=100;


public static void main(String[] args) {


//메인 함수 안에 적었으니, 지역변수(Local variable)이다.


byte b = 1;

short s = 4; //int를 제외하고 잘 안쓰는 byte, short는, 엄청 큰 배열일 경우 크기를 고려할 때 byte배열이나 short배열을 사용한다.

int i = 1000;

long l = 10000000000L; //int의 범위(20억)을 넘는 수를 짚어 넣을 수 있다. L을 안붙히면, int로 인식되서 오류가 뜬다.

float f =3.14f;

double d= 3.14;

char c = '가';

boolean boo  = true;

String str = "조재성";

TestVar t = new TestVar();

System.out.println(t.name); //클래스의 객체형 변수, 필드, 멤버변수는 초기화 안해두 null이라는 값으로 자동초기화 되어있다

String name;

System.out.println(name); //메쏘드 안의 지역변수는 , 초기화 하지 않으면, 오류가 뜬다. 지역변수는 반드시 초기화를 해야한다.

String name2="";

System.out.println(name2); //지역변수는, 문자형변수라면 "";로 초기화 해야한다.

}


}

+ Recent posts