[JAVA] 자바 정복기 - 배열2

개발log·2024년 3월 28일

NEW 자바 정복기

목록 보기
4/27
post-thumbnail

2차원 배열

  • 행렬 구조
int[][] scores = new int[2][3];
  • 구현 방법: 1차원 배열이 다시 1차원 배열을 참조
scores.length //2(배열 A의 길이)
scores[0].length //3(배열 B의 길이)
scores[1].length //3(배열 C의 길이)
  • 계단식 구조
int[][] scores = new int[2][];
scores[0] = new int[2];
scores[1] = new int[3];

scores.length //2(배열 A의 길이)
scores[0].length //2(배열 B의 길이)
scores[1].length //3(배열 C의 길이)
  • 값 목록을 이용한 2차원 배열 생성
타입[][] 변수 = {{1,2, ...}, {1,2, ...}, ...};
               //그룹 0값 목록   //그룹 1값 목록
int [][] scires = {{95,84}, {93,86}};
int score = scores[0][0]; //95
int score = scores[1][1]; //96

객체를 참조하는 배열

참조 타입 배열

  • 요소에 값(정수, 실수, 논리값)을 저장하지 않고, 객체의 번지를 가지고 있음
String[] strArray = new String[3];
strArray[0] = "Java";
strArray[1] = "C++";
strArray[2] = "C#";

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(문자열이 동일)

배열 복사

  • for문을 이용해서 요소 하나를 복사
  • System.arraycopy()를 이용한 복사
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
                 //원본배열,    인덱스,      대상배열,      인덱스,    복사할 개수
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];

System.arraycopy(oldStrArray, 0, new StrArray, 0, oldStrArray.length);


향상된 for문

  • 배열이나 컬렉션을 좀 더 쉽게 처리
  • 반복 실행 윙 루프 카운터 변수나 증강식 사용하지 않음
int[] scres = {95, 76, 32, 34, 65};

int sum = 0;
for(int score : scores){
	sum = sum + score;
}
System.out.println("점수 총합 = " + sum);

정리

  • 배열: 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스 부여한 자료구조
  • 인덱스: 0부터 시작해 0~(배열길이-1)까지 범위 가짐
  • 배열 선언: 타입[] 변수; 형태로 선언
  • 배열 생성: {값1, 값2, 값3, ...}과 같이 값 목록으로 생성하거나, new 타입[길이]로 생성
  • 배열 길이: 배열에 저장될 수 있는 항목의 수, 배열변수.length
  • 다차원 배열: 타입[][] 변수 = new 타입[길이1][길이2];로 생성
  • 향상된 for문: for(타입 변수 : 배열) {...}
profile
나의 개발 저장소

0개의 댓글