자바 이야기

자바 이야기 4. 배럭만들기와 한 부대씩 움직이게 하기

김푸른초푸른 2020. 2. 28. 18:05

1. 함수란? 

= 파라미터에 값을 넣으면 함수 안에 있는 조건식이 동작을 하여 결과를 보여준다.

 

ex) public static int 함수명(int x, int y) // 파라미터 
{
  c = a+b;

  return c;

}

함수명(2,3);  //함수호출! -> 결과 : 5

 

2. 지역변수, 전역변수 

1) 지역변수 : 함수 안에서만 사용가능함

-> 파라미터 , 선언 초기화한 변수   

 

2) 전역변수 : 함수 밖에 위치하며 어느 함수든 타입형식을 지정하지 않아도 사용가능함

-> 객체, 클래스 소속 변수 

 

 

3. 메모리 구조 (메소드, 힙, 스택)

- 모든 자바는 JVM(자바 가상 머신)으로 진행된다.

- 자바를 실행시키면 JVM은 운영체제로 부터 프로그램에 필요한 메모리를 할당받는다.

 

1) 메소드 영역 (가장 높음)

- 클래스의 정보와 클래스 변수가 저장된다. 

- 클래스 파일(*.CLASS)을 읽어 해당 클래스의 정보를 저장한다.

 

2) 힙 영역

- 자바에서 사용하는 인스턴스 정보가 저장된다

- NEW로 생성하면 인스턴스가 된다. 

- 해당 인스턴스의 정보를 힙에 저장한다.

 

3) 스택 영역

- 메소드가 호출될 떄 형성된다.

- 지역변수와 매개변수를 저장한다.

- 메소드 호출시 사용되며 메소드 호출이 완료되면 소멸된다.

- 푸쉬로 데이터를 저장하고 팝으로 데이터를 인출한다. 

-> 후입선출로 늦게 들어온 메모리가 가장 빨리 인출한다.

- 메모리가 높은 주소에서 낮은 주소로 할당된다. 

 

 

4. 배열 (1차, 다차원 배열)

= 한 부대씩 움직이게 하기 / 0번 부대부터 유한한 숫자까지 존재한다. 

-> 한 부대씩 움직여야해서 외벽은 반복문으로 주로 사용하며 내부에는 제어문으로 행동을 제어한다.

 

ex) 1. int[] 배열명 = new int[인덱스];

     2. 배열명 = new int[인덱스]; 

 

ex) int[] array = new int[5];

int[] array1 = new int[5];

 

array[1] = 80;

array[2] = 81;

array[3] = 82;

array[4] = 83;

 

array1[0] = 85;

 

for(int i=0; i<array.length; i++){

System.out.println(array[i]+""); // 결과값 = 0,81,82,83

 

}

 

for(int i=0; i<array1.length; i++){

System.out.println(array1[i]+""); // 결과값 = 85,0,0,0,0

 

}

 

5. 배열 초기화 

= 변수 유닛처럼 선언과 동시에 공격력 정할 수 있다 

ex) 1. int[] 배열명 = {배열요소1, 배열요소2 ....}

    2. int[] 배열명 = new int[]{배열요소1, 배열요소2 ....}

 

ex)       1) int[] array = {70,80,90};

2) int[] array1 = new int[]{70,80,90};

 

for(int i=0; i<array.length; i++){

System.out.println(array[i]+"");

}

for(int i=0; i<array1.length; i++){

System.out.println(array1[i]+"");

}

 

6. 다차원 배열

= 2차원 이상의 배열을 의미하며 한 줄이 아닌 여러 줄의 부대를 이끌 수 있다. 

-> 한 줄 씩 늘어날떄마다 for 반복문도 추가가 된다. 

1) 2차원 배열 

ex)   int[][] arr = new int[2][3]; 

int k=10;

for(int i=0; i<arr.length; i++){

for(int j=0; j<arr.length; j++){

arr[i][j] = k;

k += 10;

System.out.println(arr[i][j]+"");

}

 

}

 

2) 선언과 동시에 초기화 

ex) int arr = { {10,20,30} {40,50,60} };

 

3) 가변적 배열 

ex) int arr = { {10} {20,30,40} {50,60} }

-> 배열 길이를 자유롭게 설정한다.