Java - 배열

배열

대량의 데이터들을 쉽게 관리 하기 위해서 사용

 

배열은?

인덱스와 인덱스에 대응하는 데이터들로 이루어진
연속적인 자료구조로서 같은 종류의 데이터들이 순차적으로 저장된다.


동일한 데이터 여러개를 저장하는데
특정 번호를 사용하여 저장하거나 가져올 수 있다.

 

배열은 자료구조(data structure)에 속함
대량의 데이터를 효율적으로 관리하기 위한 매커니즘

 

Queue 자료구조

뻥뚫린 자료구조에 데이터를 저장하는 형식  어떤 통로에 자료를 보관하는 것

a 를 넣음 = a를 push 했다고함
b 를 넣음 = b push
c 를 넣음 = c push

푸쉬를 해주면 차곡차곡 쌓인다 대신 자료를 꺼내면 제일 마지막부터 나옴 
a 나오고(pop) a 사라짐
b 나오고(pop) b 사라짐  반복
FIFO 먼저 들어온놈이 먼저 나간다

FIRST IN FIRST OUT (선입선출)

 

Tree구조

html 의 구조가 tree 구조로 이루어져있음

영상 , 이미지 다 트리구조로 이루어져있음
 

Stack 구조

비커모양임

a 넣음 push a a쌓임

b 넣음 push b b쌓임

꺼낼때 queue 와 반대로 먼저 들어온놈이 가장 나중에나감(역순)

FIRST IN LAST OUT 선입후출 FILO

EX)안드로이드 구조, JAVA -메서드구조

 

Array 구조

Array 는 데이터가 순차적으로 쌓이는것, 번호를 색인 인덱스 하여 넣을 수 있다.
 

배열을 왜 사용해야할까?

무작위로 명단이 이루어져있으면 사용하기 힘듬 쉽게 부르기위해서는? 순서를 매겨주면된다!
우리 학교 다닐때 우리 이름에 번호 새긴거 생각해보자!

 

예전엔 변수를 따로따로 만들어 저장했다면 이번엔 칸을 나눠 공간을 만들고 데이터를 저장한다 (대신 데이터는 같은 종류)
ex>문자열은 문자열 

배열에 번호를 매겨놓은것 = 배열인덱스! 이 인덱스는 0부터 시작함!!

이 배열에서 인덱스는 ? = 6이 배열에서 길이는 ? = 7

인덱스는 0부터 시작하지만? 길이는 1부터 시작하기 때문에 이 길이는 7이다. 인덱스는 길이보다 1이 작다!

변수는 컴터껏다 키면 사라진다. 램에 저장되어 그냥 사라지기 때문에 변수를 만들면 다 사라져버림 

 

java의 자료형은 기본형과 레퍼런스 (참조) 존재한다. 기본형은 8개
배열은 레퍼런스 자료형이다.

 

내가 4칸짜리 인덱스 3짜리를 배열을 만들고 싶을때 . 레퍼런스 자료형은 무조건 대입연산자 뒤에 new가 들어감

new (생성하다!) ex ) scanner 생각해보자구조식
int[ ]number=newint[4]

 

대입연산자 있을시? 오른쪽부터 보면됨! 오른쪽에 있는 값을 왼쪽에 넣어주세요


new = 만들어 주세요 !
정수형타입의 길이가 4인 배열을 만들어주세요
실행시 배열이 생성됨

 

레퍼런스변수는 값을 직접 저장하는것이 아니고 변수를 참조하여 주소를 저장하는 것이다 ..!
 값을 직접적으로 저장하는것이 아니고 주소만 저장함
지금 int [ ]의 레퍼런스 변수는 int만 담을수 있다.
String 은 담을수 없음 타입이 무조건 동일해야함 (스캐너 생각하자)

 

기본구조 new int [ ]의 안에는 원하는 길이를 넣으면됨


여기 배열은 지금 3의 길이를 갖고있는데 인덱스는 0,1,2 가 존재한다
이때 인덱스 0에 값을 넣고 싶으면?
array에 부탁하면 된다 .

↓이렇게 부탁하면 됨!

 

 

값을 보고 싶을땐 이렇게 선언해주면 된다.

사람이쓰는 언어를 컴퓨터가 이해할수 있게하는 과정 = 컴파일

 
array1에 길이가 3인 정수형 배열의 주소를 담겠다라는 뜻
 
배열을 만드는 방법은 2가지 존재함
1. 먼저 배열을 먼저 만들고 값을 넣는 방법

2. 배열 생성과 동시에 값을 넣는 방법

내가 넣고 싶은 만큼 쉼표로 구분해서 넣으면 된다.

 

 

배열의 길이를 알수 있다.
 

배열 주소도 출력 가능

 

배열을 따로 만들지 않고 복제도 가능하다.

밑에 경우

array2가 아닌 array1의 2 인덱스를 바꿨는데도 array2의 2인덱스의 값도 바뀌었다.

그 이유는?
레퍼런스 변수들은  복제되는 순간 값이 복제되는 것이 아니고 주소가 복제되기 때문에 똑같은 주소를 지니게 됨
일반 변수들은 값을 복제함! 

똑같은 주소값을 가지고 있는 것을 볼 수 있음! 1번 을 바꿔도 2번이 바뀌는 이유가 있음

 

앞쪽에 [ ]는 길이를 정해 줄 수 없다!저 앞쪽은 타입과 변수명만을 알려줄뿐

 

배열의 크기는 변경할 수 없음!!!!!

배열 - for문은 함께 자주 사용함

 

배열 예제

배열 인덱스에 값을 넣고 확인해보자

 

System.out.print(Arrays.toString(배열이름))
//배열안의 값을 빠르게 확인하는법(보고만 싶다면)저거 적어주면 됨 배열을 문자열로 보겠다.

 

배열에 조건식 쓸때 1차원 배열은 향상된 for문을 사용할 수 있다.

 

구조 

이차원 배열 퀴즈
4를 출력하고 싶다면 뭘 써야할까요?

system.out.print(data[1][0]) 
구조를 잘 이해해야함 ! ㅠㅠ

 

2차원 배열 구조에 다 10 넣고 싶을때 사용하는 구조식

 
2차원 배열의 길이 이해하기

 잘 보면 위쪽은 data.length로 배열의 길이를 세준 것이다 . 길이는 배열이 총 4개 들어갔으므로 4임 => { } 갯수 
밑은 data의 인덱스 0번째 배열의 길이를 물어본것이다 1,2,3,4,5 가 들어가서 길이는 5로 출력된다.

 

2차원 배열이란 ?

배열의 인덱스 안에 배열이 들어간 구조 그 배열 안에도 인덱스가 정해져있다.

기본구조 이차원

앞 숫자는 1차원 배열의 길이를 의미함
뒤의 숫자는 각각의 배열에 몇개짜리 배열을 만들지를 의미함.
앞은 행 뒤는 열 = 행 열

"\t" 써주면 탭 여러번 의미

 

배열 예제

 

비정방형 배열

각 행의 열의 개수가 다른 배열

2차원 배열은 각각 행에 배열을 담을수 있는 주소를 가지고 있다.

 

'STUDY(개인 기록) > JAVA' 카테고리의 다른 글

프로그래밍  (0) 2024.03.07
Java - 반복문  (0) 2023.03.27
Java - if 문  (1) 2023.03.21
Java - 역사, 특징  (0) 2023.03.13