코드스테이츠 BE 10일차 - Java 배열

coding infant·2022년 7월 6일

코드스테이츠BE

목록 보기
10/48

[배열]

어떤 값 저장하기 위해서는 변수 선언 후 메모리 공간 확보 -> 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

배열 선언 : 타입 뒤에 대괄호 (타입[] 변수이름;)

배열 생성 : 연산자 'new'와 함께 배열 타입과 길이 지정 (변수이름 = new 타입[길이];)

배열은 참조변수. 실제 값이 아닌 주소값이 저장됨 (인덱스). 크기를 알 수 없기 때문에

주로 1차원 배열과 2차원 배열 사용 (차원? 배열이 중첩된 정도)

[1차원 배열]

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 인덱스] 자료가 연속적이지 않아도 좋음. 생성과 추가 쉬움

[2차원 배열]

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]));  // 내부 배열의 첫번째 배열값이 나옴

[가변 배열]

마지막 차수에 해당하는 배열의 크기 지정하지 않을 때 가변 배열 생성

내부 배열의 크기 가변적. 외부 배열만 생성된 상태

[배열 탐색]

코플릿은 역시나 너무 어렵다

틈틈히 복습해서 내걸로 만들어야겠다

여러번 하다 보니 자주 쓰이는 논리 구조가 있어서 틀만 익히면 응용하기 쉬을 것 같다

부리나케 구글링 해가면서 계산기 과제도 해서 만들어 냈다

기본적인 틀만 구성했는데 이번주 안으로 복습해서 새 기능들 추가하고 다시 깃허브에 올려야지

오늘의 오류

  1. 객체지향 언어라 그런지 인텔리제이 내에서 run 한 파일이 아닌 프로젝트 내 다른 파일까지 다같이 컴파일 해버리는 오류 발생

    디버그 창에서 필요 없는 파일 오른쪽 마우스 버튼 누른 후 exclude from compile 눌러준다

  1. 코드스테이츠 깃허브에서 포크해 온 자바 파일이 인텔리제이에서 불러왔을 때 구동이 되지 않았다.

    파일 자체를 열어서 문제였던 것이었으며 아예 파일이 든 상위 폴더 자체를 열어줘야 오류 없이 잘 돌아간다.

0개의 댓글