PlayData 백엔드 부트캠프 정리

PlayData 백엔드 부트캠프 Start 5일차

효건 2024. 8. 14. 01:08

1. 배열 Array

      가. 배열의 선언

             1) 배열 선언하는 방법

타입[] 변수이름;
int [] array // 자바스타일
int array [] // C언어 스타일

                물론 두개 모두 사용이 가능하나, 자바는 자바스타일로 사용하는 것이 불문율이다. 따라서 자바스타일을 왠만하면 사용하도록 하자.

           2) 배열 객체 생성 후 특징 

  • 배열 객체를 생성하여 실제 값들을 저장될 공간을 형성한다. 
  • 변수에 배열 자체가 들어있는 형태가 아니다. 따라서 넓은 영역인 heep 이라는 영역에 뱅열을 형성한다. 이곳에 주소를 저장하고 배열에 접근할수있도록 구성한다.
  • 인덱스(Index) : 배열 내부의 위치를 지정할 수 있는 값이다. → 0부터 시작하기 때문에 길이보다 1개 작다고 할수있다.
  • 배열 객체의 내부를 확인하면 기본값으로 형성되어 있는 것을 볼수있다.

 * 기본값으로는   정수(int)는  0, 실수(double)은 0.0, 논리(boolean)은 false,문자(char)는 공백, 기타(객체)는 null로 기입되어 있다는 것을 확인할수있다.

 

* 강사님의 의견으로는 동서양의 차이라고 한다. 동양은 1부터 10까지 서양은 0부터 9까지 통상적으로 계산하기 떄문이라고 한다, 

  나 . 배열의 사용

           1) 배열의 길이 확인 

System.out.println(arr.length); // 배열의 길이를 정수로 나타낸다

           2) 배열의 값을 지정(초기화)

int[] numbers = {1, 2, 3, 4, 5};

여기서 int는 변수 타입이므로 string, double,등도 가능하다. 

           3) 배열을 문자열로 확인

System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 4, 5]

toString으로 확인하면 배열내에 내용들을 확인할수있다. 

 

for-each문을 활용하여 확인하는 방법도 있다.// Index(제어변수)의 사용없이 전체 참조  

for (배열 요소를 받을 수 있는 변수 : 배열 또는 컬렉션 이름) {
    // 실행문;
}

이를 이용하여 확인할수도 있지만  배열에 각요소를 계산에 활용할수도 있다. 

for- each 문은 전체 참조를 하기 때문에 이용도가 높을것으로 보인다.  단, 인덱스 정보를 알수없어 범위지정이 힘들다.

  다 . 배열의 탐색 

           1)  for 문을 이용하여 하나씩 모두 확인하는 방법 

Scanner sc = new Scanner(System.in);
System.out.print("탐색할 음식을 입력하세요: ");
String name = sc.next();

boolean flag = false;
for(int i=0; i<foods.length; i++) {
	if(name.equals(foods[i])) {
		System.out.println("탐색 완료!");
		System.out.println("인덱스: " + i + "번");
		flag = true;
		break;
	} 		
}

if(!flag) { //flag == false
	System.out.println("없는 음식입니다.");
}

여기서 주의깊게 보아야 하는 포인트는 boolean의 사용이다.

boolean이 처음에 배울때는 어떻게 응용하는 지에 대한 의문이 많았다.

그러나 쉽게 생각하면 스위치라고 생각하면 편하다. 다시말해 boolean이 false이면 산출되는 내용과 true이면산출되는 내용이 있다는 점에서 분명한 차이가 존재한다.  

 

           2) equals 문을 사용한 대입방법 

int i;
for(i=0; i<foods.length; i++) {
	if(name.equals(foods[i]) {
		System.out.println("탐색 완료!");
		System.out.println("인덱스: " + i + "번");
		break;
	}
}

if(i == foods.length) {
		System.out.println("없는 음식입니다.");
}

 

위에 for문을 이용한 것에 비해 간단하게 보인다. 따라서equals문을 많이 응용할 수있는 방법을 생각해보아야 한다.  

 

  라 . 배열의 삭제 

           1) 자바의 배열은 삭제 기능이 없다. 따라서 배열을 삭제하기 위해서는 하나 작은 배열을 만들고 그 배열에 채워넣는 방법이 유일하다. 당연히 이러한 반복을 진행할때는 반복문 for문과 while문을 이용할수있다. 그러나 끝과 시작이 명확하고 쓰이기 편한 for문을 최대한 이용하는 것이 좋을 듯하다.

 

      마. 2차원 배열 

int[][] arr2d = new int[3][4];

//산출값
{
	{0, 0, 0, 0},
	{0, 0, 0, 0},
	{0, 0, 0, 0}
}



//2차원 배열 선택
for(int i=0; i<arr2d.length; i++) {
	// i는 지금 작은 배열 덩어리를 지목하는 거임.
	for(int j=0; arr2d[i].length; j++) {
		// j는 작은 배열 덩어리 안의 데이터를 지목하는 거임.
		System.out.println(arr2d[i][j]);
	}	
}

  따라서 2차원 배열은 배열안에 배열을 뜻한다.  

 

2차원 배열을 선책하고 뽑아내는 과정에 있어서도 반복문 for문이 쓰인다는 것을 항상 인지해야한다.

언제든 이용의 가치가 있으므로  배열을 뽑아내는 과정을 항상 인지하고 있어야 한다.

2차원 배열의 응용은 가면 갈수록 어려워 지므로 항상 고민하고 고민하자.  

 

      바. 메서드(함수)

Java에서는 함수의 개념이 없다. 대신 메서드의 개념이 있는데 타 언어의 함수와 다름이없다는 사실을 인지해야 한다.

	static int calcRangeTotal(int start, int end) {
		int total = 0;
		for(int i=start; i<=end; i++) {
			total += i;
		}
		return total;
	}

예시로 이러한 메서드를 만들수 있는데 

static  다음 객체 강의에서 자세히 볼수있도록 하자 

다음 int는 return 받는 값의 형태를 말한다. 다음의 calcRangeTotal은 매서드의 이름으로 불러올때 사용하는 값이다.

다음 가로사이에 있는int start와 int end는 메서드가 작동하기 위해서 필요한 값을 말한다. 형이 다르거나 갯수가 다르다면 메서드는 작동하지 않는다.이를 매개변수라고부른다. 

이후 내부의 알고리즘은 작성하면된다. 나 자신에게 화이팅!!!