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 - 열거타입  (1) 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
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • STUDY (109)
        • JAVA (31)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (5)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (4)
  • 블로그 메뉴

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

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바