자바 기초 문법 2 차원 배열 상세 설명
본론 으로 들 어가 기 전에 먼저 여러분 의 이해 에 편리 하도록 제 가 그림 을 하나 그 렸 습 니 다.
xx 총격전 게임 에서 저 는 방금 계 정 을 등록 한 소 백 입 니 다.시스템 은 저 에 게 총 두 자루 를 보 냈 습 니 다.이때 제 무기 고 는 이 층 만 있 습 니 다.(한 배열 로 이해 할 수 있 습 니 다.총 은 대응 하 는 배열 에서 대응 하 는 요소 입 니 다)
어 려 운 전 투 를 통 해 마침내 돈 이 생 겼 습 니 다.지금 은 제 가 배치 할 게임 장 비 를 갖 추 려 고 합 니 다.저 는 지금 총 장 이 하나 있 습 니 다.3 층 의 총 기 를 보관 할 수 있 고 층 마다 무 기 를 여러 개 넣 을 수 있 습 니 다.(이것 이 바로 2 차원 배열 입 니 다.다 층 이 있 고 층 마다 1 차원 배열 입 니 다)
게임 시간 과 나의 뛰어난 기술 에 따라 게임 장 비 를 얻 는 효율 이 점점 높 아 지고 있다.한 개의 총 장 은 이미 저장 할 수 없다.그래서 나 는 여러 개의 총 장 을 가지 게 되 었 다.(이것 이 바로 다 차원 배열 이 고 한 차원 에 보관 하 는 것 은 하나의 2 차원 배열 이 며 한 개의 2 차원 배열 중 여러 개의 1 차원 배열 이 있다.)
위의 그림 은 1 차원 배열 에서 다 차원 배열 로 의 변천~이미지 있 지 않 아 요?하하~
2 차원 배열 의 정의
2.1 성명
//
[][] ;
//
[][];
//
[]
예 를 들 어 저 는 추천 하지 않 지만 번역 이상 을 일 으 키 지 않 는 쓰기 방법 을 올 렸 습 니 다.어떤 면접 문 제 는 만 나 고 인상 이 있 으 면 좋 겠 기 때 문 입 니 다.2.2 초기 화
2.2.1 정적 초기 화
//1. ,
[][] ;
= new [][]{
{ 1, 2, 3 。。。},
{ },
...
{ n }
};
//2.
[][] = new [][]{
{ 1, 2, 3 。。。},
{ },
...
{ n }
};
//3.
[][] = {
{ 1, 2, 3 。。。},
{ },
...
{ n }
};
//
int[][] arr;
//
arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
//arr = new int[3][3]{{1,2,3},{4,5,6},{7,8,9}};// , , new []
//
int[][] arr = new int
예제 코드 1:
public class Array2Demo1 {
public static void main(String[] args) {
//
int[][] arr = {{1,2,3},{4,5},{6}};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[0][0]); //1
System.out.println(arr[1][0]); //4
System.out.println(arr[2][0]); //6
System.out.println(arr[0][1]); //2
System.out.println(arr[1][1]); //5
//
System.out.println(arr[2][1]); //
}
}
예제 코드 2:
public class TwoArryTest {
public static void main(String[] args) {
//
// MM
String[][] girls = new String[][]{ {" "," "," "},{" "," "},{" "," "," "} };
/*
*
* , MM
* MM , ,
* , , ~~
* ,
* */
//
System.out.println(girls[0][0]);
//
System.out.println(girls[0][1]);
//
System.out.println(girls[1][0]);
//
System.out.println(girls[2][2]);
}
}
2.2.2 동적 초기 화동적 초기 화 생 성 은 1 차원 배열 의 길 이 를 설명 하지 않 아 도 됩 니 다.따라서 1 차원 배열 의 길 이 는 다 를 수 있 습 니 다.so 는 다음 과 같은 두 가지 초기 화 방식 이 있 습 니 다.
규칙 2 차원 표:각 줄 의 열 수 는 같다.
격식.
//(1)
[][] = new [m][n];
m: 。
n: 。
// , 、 ,
//(2)
[ ][ ] = ;
예제 코드:
public static void main(String[] args) {
//
int[][] arr = new int[3][2];
// arr
// 3
// 2
//
System.out.println(arr); // [[I@175078b
//
System.out.println(arr[0]); // [I@42552c
System.out.println(arr[1]); // [I@e5bbd6
System.out.println(arr[2]); // [I@8ee016
//
System.out.println(arr[0][0]); //0
System.out.println(arr[0][1]); //0
}
동적 초기 화 2(불규칙 2 차원 표)불규칙 2 차원 표:줄 마다 열 수가 다 를 수 있 습 니 다.
격식.
//(1)
[][] = new [ ][];
// , null
//(2) ,
[ ] = new [ ];
// new , new null
//(3)
[ ][ ] = ;
불규칙 2 차원 표,성명 후 초기 화 내부 1 차원 배열 시 간략하게 쓸 수 없습니다.
//
//
int[][] arr = new int[3][]; // 3 ,
//
arr[0] = new int[]{1}; // arr[0] = {1}
arr[1] = new int[]{2,3};
arr[2] = new int[]{4,5,6,7};
예제 코드 1:
public class TwoArryTest {
public static void main(String[] args) {
//
int[][] arr = new int[3][];
System.out.println(arr); //[[I@175078b
System.out.println(arr[1][0]);//NullPointerException
System.out.println(arr[0]); //null
System.out.println(arr[1]); //null
System.out.println(arr[2]); //null
//
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1];
System.out.println(arr[0]); //[I@42552c
System.out.println(arr[1]); //[I@e5bbd6
System.out.println(arr[2]); //[I@8ee016
System.out.println(arr[0][0]); //0
System.out.println(arr[0][1]); //0
//ArrayIndexOutOfBoundsException
//System.out.println(arr[0][2]); //
arr[1][0] = 100;
arr[1][2] = 200;
}
}
예제 코드 2:
public class TwoArryTest {
public static void main(String[] args) {
//
/*
* ,
* ,
* , ,
* , , , ( )
* */
String[][] Guns = new String[3][];
//
String[] GunMagazine = {"AWM","Bird sniper"};
// , ,
String[] rifle = {"AK47","M4A1 QBZ95"};
// , , ,
String[] auxiliaryWeapon = {"( )pistol","( )antitank grenade", "( )smoke bomb"};
}
}
주의사항:정적 초기 화 라면 오른쪽 new 데이터 형식[][]에 숫자 를 쓸 수 없습니다.줄 수 와 열 수 는{}요소 개수 에 의 해 결정 되 기 때 문 입 니 다.3.2 차원 배열 의 옮 겨 다 니 기
for(int i=0; i< .length; i++){
for(int j=0; j< [i].length; j++){
System.out.print( [i][j]);
}
System.out.println();
}
4.2 차원 배열 의 메모리 그림 분석2 차원 배열 재 메모리 그림 의 절 차 는 다음 과 같다.
절차:
1.먼저 main 방법 을 만 듭 니 다.이 main 방법 은 스 택 메모리 에 존재 합 니 다.(이 메모리 에 있 는 스 택 은 앞에서 언급 한 적 이 있 습 니 다.잊 어 버 려 도 괜 찮 습 니 다.다음 장 에서 다시 공유 하 겠 습 니 다)
2.정적 초기 화 2 차원 배열 arr 를 만 들 고 스 택 메모리 에 int[][]arr=을 만 듭 니 다.
3.스 택 메모리 에 2 차원 배열 int[][]를 만 들 때 안의 값 은 메모리 에 공간 을 엽 니 다.왼쪽 은 2 차원 배열 입 니 다.3 개의 1 차원 배열 이 저장 되 어 있 기 때문에 세 개의 요소 가 있 고 오른쪽 은 각각 3 개의 1 차원 배열 의 메모리 공간 을 엽 니 다.
4.모든 메모리 공간 에 하나의 주소 가 있 습 니 다.2 차원 배열 에는 1 차원 배열 의 주소 가 저장 되 어 있 고 스 택 메모리 int[][]arr=2 차원 배열 의 메모리 주소 가 저 장 됩 니 다.
5.그래서 첫 번 째 인쇄 arr 의 2 차원 배열 은 자바 소스 코드 변환 후의 메모리 주소 이 고 두 번 째 는 2 차원 배열 의 첫 번 째 1 차원 배열 의 메모리 주소 이다.
6.세 번 째 인쇄 는 2 차원 배열 의 첫 번 째 1 차원 배열 의 첫 번 째 요소 이다.
5.배열 작업 의 흔 한 이상
배열 경계 이상
예제 코드:
public static void main(String[] args) {
int[] arr = {1,2,3};
System.out.println(arr[3]);
}
월경 이상 도이상 원인
배열 을 만 들 고 3 개의 요 소 를 부여 합 니 다.배열 의 색인 은 0,1,2 입 니 다.3 개의 색인 이 없 기 때문에 배열 에 존재 하지 않 는 색인 에 접근 할 수 없습니다.프로그램 이 실 행 된 후에 Array Index Outof Bounds Exception 배열 의 경계 이상 을 던 집 니 다.개발 중 에 배열 의 크로스 오 버 이상 은 나타 날 수 없습니다.일단 나타 나 면 우리 가 작성 한 코드 를 수정 해 야 합 니 다.
배열 빈 포인터 이상
예제 코드:
public static void main(String[] args) {
//
int[][] arr = new int[3][];
System.out.println(arr[0][0]);//NullPointerException
}
빈 포인터 이상 도이상 원인
이상 원인:이 때 배열 의 모든 줄 에 구체 적 인 저장 요소 의 공간 이 할당 되 지 않 았 기 때문에 arr[0]은 null 입 니 다.이때 arr[0][0]을 방문 하면 NullPointer Exception 빈 포인터 이상 을 던 집 니 다.
총화
이 장 에 서 는 2 차원 배열 에 관 한 소 개 를 소 개 했 습 니 다.이로써 배열 과 자바 의 기본 적 인 문법 은 끝 났 습 니 다.다음 장 에 서 는 대상 을 대상 으로 하 는 소 개 를 시작 합 니 다.대상 을 대상 으로 하 는 디 테 일이 비교적 많 습 니 다.여전히 이해,이해,사례 를 많이 하 는 것 이 중요 합 니 다.저 는 시간 을 내 서 사례 문 제 를 정리 하여 여러분 들 이 제 글 과 결합 하여 지식 을 공 고 히 하고 누락 된 부분 을 찾 아 보충 할 수 있 도록 하 겠 습 니 다.
자바 기초 문법 에 관 한 2 차원 배열 의 상세 한 설명 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 2 차원 배열 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.