어떤 값 저장하기 위해서는 변수 선언 후 메모리 공간 확보 -> 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
배열 선언 : 타입 뒤에 대괄호 (타입[] 변수이름;)
배열 생성 : 연산자 'new'와 함께 배열 타입과 길이 지정 (변수이름 = new 타입[길이];)
배열은 참조변수. 실제 값이 아닌 주소값이 저장됨 (인덱스). 크기를 알 수 없기 때문에
주로 1차원 배열과 2차원 배열 사용 (차원? 배열이 중첩된 정도)
1차원 배열의 선언과 초기화
-> [] 대괄호를 붙여서 선언 및 초기화 가능
double[] temperatureOfJuly = new double[31];
// 8byte 메모리 확보. []는 배열 참조 변수. 배열 시작 주소 temperatureOfJuly에 저장. 31개의 double값 배열 저장.
double[] temperatureOfJuly = new double[] { 27.4, 30.1, 31.1, 32.4, ..., 31.8 };
// 실제 값 넣어서 초기화. 또는 double[] temperatureOfJuly = { 27.4, 30.1, 31.1, 32.4, ..., 31.8 };
선언과 초기화 하나의 문장으로 할 때 한해 new double[] 생략 가능
[값 접근하기]
배열에 넣은 값 사용할 때 배열의 참조변수의 이름과 인덱스 활용
인덱스의 범위: 0부터 '배열길이 n -1'까지
배열 크기 : (1~ n)
배열의 길이 : 배열참조변수이름.length (1~ n)
배열의 요소 확인 : Arrays.toString()
배열은 자료 추가 어려움. 자료 연속적으로 존재. 어레이값 추가할 때 새 배열 만들고 뒤에 추가해줘야
cf. linked list
[자신의 인덱스, 자기 값, 다음의 인덱스][n번째 인덱스, 값, n+1 인덱스] 자료가 연속적이지 않아도 좋음. 생성과 추가 쉬움
int [] [] 배열명 = new int [] [] {
{ 배열값, 배열값}...
}
또는
int [외부배열개수] [내부배열요소수] 배열명 = {
{ 배열값, 배열값}...
}
int[][] kcal = {
{ 1982, 2098, 2130 },
// 내부배열은 1982, 2098, 2130의 3개 요소 가짐
{ 2242, 2431, 2198 },
{ 2365, 1997, 1932 }};
System.out.println(Arrays.toString(kcal)); // 외부배열의 주소값이 나옴
System.out.println(Arrays.toString(kcal[0])); // 내부 배열의 첫번째 배열값이 나옴
[가변 배열]
마지막 차수에 해당하는 배열의 크기 지정하지 않을 때 가변 배열 생성
내부 배열의 크기 가변적. 외부 배열만 생성된 상태
[배열 탐색]
코플릿은 역시나 너무 어렵다
틈틈히 복습해서 내걸로 만들어야겠다
여러번 하다 보니 자주 쓰이는 논리 구조가 있어서 틀만 익히면 응용하기 쉬을 것 같다
부리나케 구글링 해가면서 계산기 과제도 해서 만들어 냈다
기본적인 틀만 구성했는데 이번주 안으로 복습해서 새 기능들 추가하고 다시 깃허브에 올려야지
오늘의 오류
객체지향 언어라 그런지 인텔리제이 내에서 run 한 파일이 아닌 프로젝트 내 다른 파일까지 다같이 컴파일 해버리는 오류 발생
디버그 창에서 필요 없는 파일 오른쪽 마우스 버튼 누른 후 exclude from compile 눌러준다
코드스테이츠 깃허브에서 포크해 온 자바 파일이 인텔리제이에서 불러왔을 때 구동이 되지 않았다.
파일 자체를 열어서 문제였던 것이었으며 아예 파일이 든 상위 폴더 자체를 열어줘야 오류 없이 잘 돌아간다.