JAVA - 다차원 배열

2022. 4. 13. 15:19·STUDY/JAVA
반응형

다차원 배열

2차원 배열 ? 
   수학의 행렬을 떠올리면 이해하기 쉬운데
   가로인덱스와 세로인덱스를 사용한다.
int[][] scores = new int [2][3];

위와같은 코드를 사용하면 2행,3열의 배열이 만들어진다.

(0,0)  (0,1)  (0,2)

(1,0)  (1,1)  (1,2)

 

이 때, 스택영역에는 scores변수가 생성되고

힙 영역에 int 타입 배열 A, int 타입 배열 B, int 타입 배열 C 세 개의 배열객체를 생성한다.

//각각의 길이는

scores.lenght     //2(A길이)
scores[0].lenght  //3(B길이) 0번째 행의 길이
scores[1].lenght  //3(C길이) 1번째 행의 길이

 

자바는 일차원 배열이 서로 연결된 구조로 다차원 배열을 구현하기 때문에 계단식 구조를 가질 수 있다.

int[][] scores = new int[2][];
scores[0] = new int[2]
scores[1] = new int[3]

//이때 각각 길이는
scores.lenght     //2(A길이)
scores[0].lenght  //2(B길이) 0번째 행의 길이
scores[1].lenght  //3(C길이) 1번째 행의 길이

이런 형태의 배열은 배열의 길이를 정확하게 알고 인덱스를 사용해야한다.

그렇지 않으면 ArrayIndexOutOfBoundsException 오류를 발생시킨다.

 

 

객체를 참조하는 배열

String은 클래스 타입이므로 String[]배열은 각 항목에 문자열 값이 아닌 String 객체의 주소를 가지고 있다.

String[] strArray = new String[3];
strArray[0] = "java";
strArray[1] = "C++";
strArray[2] = "C#";

위 코드를 그림으로 표현하면

 

따라서 String[] 배열의 항복도 String 변수와 동일하게 취급되어야 한다.

	String[] strArray = new String[3];
	strArray[0] = "java";
	strArray[1] = "java";
	strArray[2] = new String("java");
			
	System.out.println(strArray[0] == strArray[1]);       //true
	System.out.println(strArray[0] == strArray[2]);       //false
	System.out.println(strArray[0].equals(strArray[2]));  //true

 

배열복사 System.arraycopy()

 배열은 한 번 크기를 생성하면 변경할 수 없기 때문에

 더 많은 공간이 필요하면 큰 배열을 새로 만들고 이전 값을 복사해야함

System.arraycopy)objext src, intsrcPos, object dest, int destPos, int length);

src : 원본배열
srcPos : 원본 배열에서 복사할 항목의 시작 인덱스
dest : 새 배열
destPos : 새 배열에서 붙여넣을 시작 인덱스
length : 복사할 개수
		String[] oldArr = {"java", "c++", "c#"};
		String[] newArr = new String[5];
		
		System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);

		
		for(int i = 0; i<newArr.length; i++){
			System.out.print(newArr[i]+",");
		}
        
        
        //java,c++,c#,null,null,

복사되지 않은 항목은 String[]배열의 기본값인 null이 그대로 유지됨

 

 

 

 

반응형
저작자표시 (새창열림)

'STUDY > JAVA' 카테고리의 다른 글

JAVA - 열거타입  (0) 2022.04.13
JAVA - 향상된 for문  (0) 2022.04.13
JAVA - 배열 1  (0) 2022.04.13
jAVA - 데이터 타입 분류/메모리 사용 영역  (0) 2022.04.12
JAVA 연산자  (0) 2022.04.11
'STUDY/JAVA' 카테고리의 다른 글
  • JAVA - 열거타입
  • JAVA - 향상된 for문
  • JAVA - 배열 1
  • jAVA - 데이터 타입 분류/메모리 사용 영역
3unB
3unB
  • 3unB
    ILLILI
    3unB
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • STUDY (107)
        • JAVA (30)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (4)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 짱민지
    • 아랄이
  • 공지사항

  • 인기 글

  • 태그

    alter
    전포동 핫플
    전포 연어덮밥
    인제 두부
    속초 해변 숙소
    망미 조용한 카페
    Database
    속초 중앙시장 감자전
    전포 밥집
    전포동 맛집
    콩콩팥팥 맛집
    속초 숙소 내돈내산
    서면 설야멱
    oracle
    망미 바
    오블완
    망미 테린느
    콩콩팥팥 두부
    서면 맛집
    인제 고향집
    전포 데이트
    전포 신상 맛집
    망미 카페
    전포 맛집
    전포동 카페
    배열 한 컬럼에 넣기
    전포 오꼬노미야끼
    티스토리챌린지
    mysql
    센텀 신세계백화점 팝업
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.0
3unB
JAVA - 다차원 배열
상단으로

티스토리툴바