Java - 배열

2020. 8. 23. 09:25Java/Java

반응형

거의 모든 프로그래밍 언어에는 배열이라는 개념이 존재한다.

 

Java에서 배열은 같은 자료형의 자료를 더욱 편리하게 관리하기 위해서 사용한다.

 

배열은 우리가 생활에서 같은 종류의 물건들을 한 상자에 담아서 관리하는 것이라 생각하면 비슷하다.

 

 

배열=>같은 자료형의 변수들의 집합체  <->   서로 다른 자료형의 변수들의 집합체(=>구조체)

 

 

 배열을 사용하지 않으면    1.변수이름이 많아지면 관리상의 어려움이 있다.
                                    2.처리속도가 느려진다.

 

 

int s[];  
String str[];

 

위와 같이 자료형을 적어주고 []을 붙임으로써 배열을 선언했다.

 

 

int su[]=new int[3];

이렇게 3의 크기를 가진 배열을 생성했다. 자바에서 배열의 크기는 변하지 않는다.

 

su[0]=10; su[1]=20; su[2]=30;

 

배열의 인덱스는 0부터 시작하고, 위와 같이 인덱스를 통해서 값을 넣고, 값을 뺄 수 있다. 

값을 찾을 때는 반복문을 통해서 찾는 방법이 많이 사용된다.


배열의 사용 예시 코드

public class ArgTest {

	public static void main(String args[]) {
		// TODO Auto-generated method stub
        //int su,su2,su3;
		//형식) 자료형 배열명[]=new 자료형[갯수];
		int su[]=new int[3];//0,1,2
		System.out.println("su=>"+su);
		su[0]=10; su[1]=20; //su[2]=30;
		System.out.println("su[1]=>"+su[1]);
		System.out.println("su[2]=>"+su[2]);
		/*
		int su4;
		System.out.println(su4);
		*/
		System.out.println("2.배열의 두번째 작성방법");//배열을 생성하고나서 바로 초기화
		//형식) 자료형 배열명[]={요소값,요소값2,,,,};
		int c[]= {10,20,30,40,50,60,70,80,90};
		/*
		 * int c[]=new int[11]; c[0]=10,c[1]=20,,,,c[10]=110
		 * 배열의 자동으로 갯수설정=>배열명.length
		 */
		for(int i=2;i<c.length;i++)
			System.out.println("c["+i+"]="+c[i]);
		//확장 for문(=향상된 for문)=>단순히 배열,객체(=Collection)의 저장된 값을 출력
		//형식) for(배열의 자료형 출력할 변수명:배열명 or 컬렉션 객체명)
		for(int num:c)
			System.out.print("num="+num+"\t");
	}
}

2차원 배열 예제

 

 

public class DoubleTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        System.out.println("2차원배열을 생성 및 가변배열");
        //1.형식) 배열의 자료형 배열명[][]=new 자료형[행수][열수]
        int c[][]=new int[3][3];//c[0][0]=10,c[0][1]=20,,,c[2][2]=90;
        //2.형식) 배열의 자료형 배열명[][]={{열의값1,값2,,},{열의값2,,,},{}}
        int b[][]= {{10,20,30},{40,50},{60,70,80,90}};//3*3=9
        //                b[0][0]=10   b[1][1]=50     b[2][2]=90
        for(int i=0;i<b.length;i++) {
        	//System.out.println("b["+i+"]="+b[i]); 행의 주소출력=>열을 찾아갈수있다.
        	for(int j=0;j<b[i].length;j++) {
        		System.out.println("b["+i+"]["+j+"]="+b[i][j]);
        	}//inner for
        }//outer for
        System.out.println("===확장 for문(2차원 배열) 배열의 첨자와 상관없음===");
        /*       for(2차원배열의 자료형 배열명[][]:3차원배열명)=>참조
         *         for(1차원배열의 자료형 배열명[]:2차원배열명)  //[][] (X)
         * 형식)    for(1차원 배열의 자료형 출력변수명:1차원 배열명)
         */
      //for(int b[][]:x){
        for(int tmp[]:b) {//2차원배열에서 1차원배열의 값을 하나씩 꺼낸다.
        	for(int su:tmp) {//tmp[]->su
        		System.out.print(su+"\t");//가로로 이동하면서 출력
        	}
        	System.out.println();//줄바꿈
        }//outer for
	}
}

배열과 오버로딩을 이용한 활용

 

매개변수에 String ... names을 통해 동적으로 변수를 받아 오버로딩을 생성 가능하다.

public class VarArgTest {

	//(1)오버로딩(자료형은 같고 갯수가 다른경우)
	/*
	public void print(String a) {
		System.out.println("a=>"+a);
	}
	public void print(String a,String b) {
		System.out.println("a=>"+a+",b=>"+b);
	}
	public void print(String a,String b,String c) {
		System.out.println("a=>"+a+",b=>"+b+",c=>"+c);
	}*/
	
	public void print(String ... names){//(String names[]) { 일반적인 배열
		/*  동적배열(크기 자동증가)  가변매개변수=>매개변수가 그때마다 다르다
		 * String names[]={"홍길동"}
		 * String names[]={"홍길동","테스트"}
		 * String names[]={"홍길동","테스트","테스트김"}
		 */
		for(int i=0;i<names.length;i++)  //for(String su:names)
			System.out.print(names[i]+",");//System.out.print(su+",");
		System.out.println();//줄바꿈
	}
	public static void main(String args[]) {
		// TODO Auto-generated method stub
       VarArgTest vat=new VarArgTest();//메서드호출 목적
       vat.print("홍길동");
       vat.print("홍길동","테스트");
       vat.print("홍길동","테스트","테스트김");
       vat.print("홍길동","테스트","테스트김","임시");//4
       vat.print("홍길동","테스트","테스트김","임시","임시2");//5
       vat.print("홍길동","테스트","테스트김","임시","임시2","임시3");//6
	}
}
반응형

'Java > Java' 카테고리의 다른 글

Java - 상속(2) - super()  (0) 2020.08.23
Java - 상속(1)  (0) 2020.08.23
Java - this  (0) 2020.08.21
Java - 오버로딩  (0) 2020.08.21
Java - 캡슐화  (0) 2020.08.19