본문 바로가기

IT일반과목/java

객체배열, 변수

- 변수

 1. 지역변수

 -> 해당지역(메소드)에서만 사용이 가능한 변수

 -> 메소드내에서 선언, 메소드안에서만 사용이 가능

 -> 메소드를 나가는 경우에 소멸

 -> for(int i=0; i<5; i++) {

실행코드

}//int i도 지역변수고 for문안에서만 쓰는 지역변수


 2. 전역변수(인스턴스 변수)

 -> 클래스 영역에서 선언됨, 해당클래스안에서 사용이 가능

 -> 객체를 생성하게 되는 경우에 생성

 -> 그림으로 보자면 Tv t1 = new Tv();

이경우 메모리에 t1의 주소값을 저장하고 실제로따라가면 이녀석안에 Tv라는 모양의 객체가 생긴다. 또 Tv t2 = new Tv(); 하고나면 t2라는 녀석의 주소2번을 저장하고 따라가면 Tv모양의 객체가 만들어진다. 이안에는 channel, volume 등등이 있다.

t1을 만들었을때 Tv클래스안에 있는 변수들을 전역변수라 한다.

인스턴스 변수란 말은 인스턴스화 해서 사용해야되기때문에 그때 메모리에 할당되며 자리가 생기므로 인스턴스변수라고도 한다.


 3. 정적변수

 -> 클래스영역에 선언

 -> 클래스와 관계없이 사용이 가능합니다.

 -> 인스턴스변수와 비슷한데 차이가 있다면 객체끼리 공유를 한다.

 -> 정적변수는 static을 쓰는데 이녀석은 변수가 정적변수인데 t1을 백만원에 팔았다하면 t2는 이백만원에 팔았다. t2의가격을 200으로 올리면 t1의 가격도 자동으로 200으로올라간다는 것이다.

static 변수는 같이 변경이 된다는 것이다. -> static를 거의 안쓰긴 한다.

우리는 안쓴다.


 4. 상수

 -> final 키워드를 붙이면 상수화가 된다.

 -> 더이상 값을 수정할 수 없다.

 -> 변수명은 모두 대문자로 적는다.

 -> ex( SIZE, 원주율 등) 안바뀔값들을 상수화처리한다.


ex)

public class Test{

private int globalVal; //전역변수

private static final int STATICVAL; //정적변수,상수화

public void local() {

int localVal; //지역변수


}

}


==================================================================================================



1. 메소드 오버로딩

2. 생성자

3. 변수(지역변수, 전역변수, 정적변수)

4. has a 포함관계

 -> A has a B : A안에는 B가 포함되어 있다.

 -> 포함 : 재활용하고싶은 클래스의 객체를 멤버변수로 선언하겠다.

 -> A클래스안에서 B클래스를 멤버변수로 쓰겠다.

Controller 클래스에서 Tv클래스를 멤버변수로 사용했다.

has a 관계이다.

 -> 자바에서는 데이터를 표현하는 클래스와 데이터를 운영하는 클래스를 별도로 두고 사용한다.

 -> Tv라는 클래스는 데이터가 되는 클래스

 -> Controller클래스는 : 데이터를 운영하는 클래스가 된다.


-------------------------------------------------------

ex)controller에서 보자면

Tv t = new Tv();

//컨트롤러는 tv라는걸 포함하고 있다. 이부분을 보고 has a관계라 한다.




- 객체배열

 -> 배열 -> 같은데이터타입의 변수를 다수로 사용할때

 -> 객체배열 -> 같은 다수의 객체를 생성할때 객체배열

 -> 같은객체에만 적용 할 수 있다.

 -> int [] arr = new int[5];

-> arr주소를 저장하고 -> arr[0],arr[1]~,arr[4]

-> 객체배열 같은경우 Tv [] arr = new Tv[3];

-> arr->주소가 들어가고,

-> arr[0] -> Tv라는 객체의 주소가 있다.

int [] arr = new int[5]; => 5개 사용가능

//이렇게 하면 5개짜리 칸이 바로 생긴다.

Tv [] t = new Tv[3];

t[0]=new Tv();

t[1]=new Tv();

t[2]=new Tv();

이렇게 해줘야 주소값이 들어가있는 상태에서 이렇게 만들수 있다.

//객체배열같은경우 주소가 담기므로 주소만 3개 잡혀져있고 주소를 따라가면 Tv라는 객체를 다시 만들어야되므로 한단계가 더 필요한 것이다.

그래서 인스턴스화 작업을 해주는 것이다.


new라는걸 언제 쓰냐면?

메모리에 실제로 할당할 때 쓴다.

그러므로 이렇게 해줘야한다. 기존배열과 다르다는걸 인지해놓기



'IT일반과목 > java' 카테고리의 다른 글

포인트관리(상속)  (0) 2018.07.24
포인트관리  (0) 2018.07.24
Student 만들기  (0) 2018.07.23
Student 객체의 이해(과제)  (0) 2018.07.23
메소드 재정의(상속에서 super과 this)  (0) 2018.07.22