Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
10-10 22:21
Archives
Today
Total
관리 메뉴

Developer_Neo

[코드스테이츠 백엔드 2기(40기) SEB BE] 10일차 본문

코드스테이츠

[코드스테이츠 백엔드 2기(40기) SEB BE] 10일차

_Neo_ 2022. 7. 6. 10:22
반응형

오늘 나의 학습 목표는 무엇인가요?

    

배열을 알아보자

 

오늘 학습할 내용 중에 이미 알고 있는 내용은 무엇인가요?

      알고있는 상태

 


배열

- 많은 값을 저장해야하는 경우에 많은 수의 변수를 선언해야한다. 이때 변수를 선언하는 것과 선언한 변수들의 합을 구할때 매우 비효율적으로 변수에 대해 다 적어주어야한다 . 이러한 문제를 해결하기 위해 배열이라는 것을 사용한다

.

- 동일한 타입의 값들을 하나의 묶음으로 묶은 자료구조 또는 자료형의 집합을 의미한다.

- 배열의 길이(크기)는 고정되어 있다.

 

- extra) 그냥 많은 변수들로 저장을 할 때에는 메모리주소에 흩어져서 저장이 되지만, 배열로 저장할 때에는 배열이 하나의 연속된 메모리주소공간들을 가지고 있어 배열에 값을 저장할때 차례대로 연속적으로 저장이 된다.

 

 

1. 1차원 배열

    : 배열의 요소가 배열이 아닌 것으로 중첩이 없는 것이다.

    예 : { 1, 2, 3, 4 }

2. 2차원 배열

    : 배열의 요소가 배열인 경우로 중첩이 한번 일어난 경우다.

    예 : { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } }

 

// 빈 1차원 배열 선언
int[] nums= new int[]{};

1차원 배열

선언과 초기화

int[] nums;  //선언
nums = new int[31];  //초기화

int[] nums = new int[31];  //선언과 초기화 동시에 하기

int[] nums = {1,2,3,4,5,6,7};  //선언과 값으로 초기화 동시에 하기

위의 세부적인 과정

1. int타입의 메모리를 할당받고 nums라고 이름을 붙인다.

2. int[31]인 총 31개의 int형 값을 저장할 수 있는 배열의 메모리 공간을 할당한다.

3. 배열의 메모리 공간의 처음 주소를 nums의 값으로 넣는다.

 

- 자바에서 배열은 참조 타입이다. 그래서 배열의 변수는 배열의 첫 주소값을 담는다. (String도 마찬가지)

   why? 배열이나 String인 참조타입인 경우 컴퓨터가 얼마 만큼의 메모리 공간을 확보해야하는지 알 수 없기 때문이다.

   배열의 경우 선언할때 타입에 []가 붙어 참조타입인 걸 알고 Stirng은 자료형 자체가 기본 타입이 아니기 때문에 알 수 있다.

 

  • 기본 타입의 값을 변수에 할당하면 해당 변수에는 실제 값이 저장됩니다.
  • 참조 타입의 값을 변수에 할당하면 해당 변수에는 주소값이 저장됩니다.

 

값 접근하기

nums[0]
nums[1]
....

위와 같은 형식으로 값에 접근이 가능하며 대괄호 안에 있는 값은 인덱스라고 한다.

length는 1부터 시작, index는 0부터 시작한다는 점을 알아두자.

 

인덱스로 값에 접근할 수 있는 원리

배열 첫 번째 요소의 주소값이 참조 변수 nums에 할당된다(저장된다)

그리고 배열의 각 요소는 0부터시작하는 인덱스를 가진다.

1.  nums가 저장하고 있는 주소값으로 접근

2. 인덱스 번호로 접근

3. 인덱스 번호에 해당하는 주소값을 얻는다.

4. 해당 주소값의 값을 읽어온다.

 

배열의 길이

참조변수(배열 선언시 변수).length

 

배열의 내용 출력하는 법

Arrays.toString(변수)  -> 결과값은 배열의 안에 있는 내용이 [ ]로 감싸져서 나온다.

 


2차원 배열의 선언과 초기화

int[][] nums;  //선언
nums = new int[31][3];  //초기화

int[][] nums = new int[31][3];  //선언과 초기화 동시에 하기

int[] nums = {
		{1,2,3},
		{4,5,6},
            ...
            };  //선언과 값으로 초기화 동시에 하기

내부 배열은 3개의 요소로 가지지만, 외부 배열의 각 요소는 내부 배열의 주소값을 저장하고 있습니다.

 

가변배열

- 2차원이상의 다차원 배열에서는 1차원보다는 자유로운 형태로 배열을 만들 수 있다.

 

선언 & 초기화

int[][] nums = new int[5][];

외부 배열은 크기를 5으로 지정했으나, 마지막 차수에 해당하는 내부 배열에는 크기를 지정하지 않았습니다. 이처럼 마지막 차수에 해당하는 배열의 크기를 지정하지 않으면 가변 배열이 생성

내부 배열요소들을 new int[?]로 ?에 아무 숫자나 넣어서 할당 할 수 있다.

 

// 가변 배열도 일반적인 배열과 같이 생성과 동시에 초기화가능

int[][] nums = {
	{ 3, 2, 9, 5, 23 },
	{ 31, 41, 52, 56, 72, 13 },
	{ 45, 32, 84, 23, 13, 42, 55 },
	{ 23, 41, 62, 64, 23, 51, 67, 98 },
	{ 13, 14, 17, 84, 52, 37, 68, 66, 33 }
};

 


오늘 학습 내용 중 새롭게 배운 내용은 무엇인가요?

       -  .

 

오늘 새롭게 학습한 내용을 다른 사람에게 설명할 수 있나요?

      - .

 

오늘 학습한 내용 중 아직 이해되지 않은 불확실한 내용은 무엇인가요?

     -  .

 

이해되지 않은, 불확실한 내용을 보완하기 위해서 나는 무엇을 할 수 있을까요?

     -  구글링을 해본다.

 

나의 오늘 학습 만족도는 몇 점인가요?

     - 90점 (아는 내용들이라고 설렁설렁 넘어간 것들이 있는 것같다.)

 

 

 

반응형
Comments