Web develop/JAVA

[JAVA] 자바 배열(Array)

ForA 2019. 4. 24. 18:59
728x90

: 데이터형이 동일한 자료에 같은(하나의) 변수명을 정의한 자료들의 집합

  • 데이터형이 동일한 자료
  • 같은(하나의) 변수명을 정의
  • su[0] , su[1] , ... -> 번지(인덱스). 데이터를 구분하기 위해서 사용함
    • ==> su라는 배열변수에 복수 데이터를 대입
    • 시작번지는 0번지
    • 첫번째 데이터부터 인덱스(자동번호)
    • 배열의 크기가 정해지면 인덱스를 벗어나는 참조를 하면 안됨

  • 배열 => 객체취급

  • 자료형 앞에 대괄호가 들어가는 순간 참조변수가 된다.

 

int su; //한개의 데이터 입력
int[] su; //여러개의 데이터 입력(배열)
int[] su3 = {10,11,12};

System.out.println(su3[1]); //데이터 사용
System.out.println(su3[5]); //에러발생. 범위 초과

 int [] su3 = {10, 20, 30};
번지 인덱스 -->  0   1   2
 ----> 배열의 크기(요소 갯수) : 3 (인덱스 0~2)

  <5000 데이터 출력>
  System.out.println(5000);


  int su=5000;
  System.out.println(su);


  int []suArr={5000};
  System.out.println(suArr[0]);


A[] suArr = {new A(), a};
System.out.println(suArr[0]);
  • 배열의 크기(배열의 요소갯수)를 구하는 속성: 배열명.length (배열은 객체다)
  • 배열선언시 []는 변수명 앞에 또는 뒤에 붙여도 상관이 없다.

선언방식 차이

// su1[] / []su1 차이점
int su1[], su2; // su1은 int배열, su2는 int변수
int []su1, su2; // su1,su2 둘다 배열

배열 형식

자료형[] 배열명 = { 데이터List(콤마로 구분되는 데이터) };

  • 배열선언과 동시에 데이터를 초기화.(이미 데이터가 확정되었을때 사용)

  • 주의: 배열선언과 데이터 초기화하는 부분을 따로 작성할 수 없음

int[] su; //배열선언
su = {1,2,3,4,5}; //배열초기화 (x)

int[] su = {1,2,3,4,5}; //선언과 초기화 (o)

A a = new A() ;
A[] su2 = { a,new A(), new A()};

배열 객체생성식

자료형[] 배열명 = new 자료형[배열크기];

  • 프로그램 실행 도중 데이터 값을 입력할때(변경할때) 주로 사용

  • 배열선언과 데이터 초기화하는 부분을 따로 작성하는 것이 가능

  • 배열크기[]는 반드시 자료형 뒤에 위치해야 함

  • 배열크기에 정수값이 반드시 입력되어야함

  • 데이터가 정해지지 않고 앞으로 입력받을 데이터들이 저장될 방(공간)만 준비

  • 배열 객체생성을 하게 되면 그 위치에 상관없이 각방에는 초기값이 부여됨 (멤버변수 처럼 각 자료형의 기본값이 입력됨)

int[] su; //배열선언
su = new int[5]; //배열초기화 (su 배열변수에 5개의 정수를 입력받겠음, 빈방 5개 생성)
==> int[] su = new int[5];
==> 데이터 입력: su[0] = 11;

2차원 배열

  • 실제 저장은 1차원 배열과 같으나 논리적으로 데이터를 행과 열의 형태로 저장한다고 생각

  • 행 사이즈는 반드시 기술해야 함. 열사이즈는 생략하는 것이 가능

//배열선언
int[][] su;
int su[][];
int []su[];

int[][] su = {{1,2,3} , {4,5,6} };
-> 행 데이터
0행 1행
열:0 1 2 열: 0 1 2

System.out.println(su[0][2]); //0행 2열 데이터 ==>3
System.out.println(su[1][1]); //1행 1열 데이터 ==>5

su.length ---> 행의 갯수 ==> 2
su[0].length ==> 0행의 열의 갯수 ==> 3
su[1].length ==> 1행의 열의 갯수

==> for(int i = 0; i<su.length; i++) { //기준(행) :행의 인덱스 표현 0,1
for(int j = 0; j<su[i].length; j++ ) { //각행의 열 인덱스 : 0 1 2
System.out.println( su[i][j] ); // ==>su배열 i행 j열