[Java] 배열과 ArrayList - 배열이란?

나영원·2020년 8월 27일
0

Java_basic

목록 보기
34/60

배열이란?

  • 배열은 자료들을 모아놓는 자료구조의 일종으로 동일한 자료형을 순차적으로 관리하는 기능을 합니다.

  • 배열을 선언하기 위해선 '자료형[] 변수명 = new 자료형[인덱스 크기]'으로 사용하고 예를 들어int[] arr= new int[10];와 같이 선언합니다.

  • 배열의 메모리 구조 아래 그림과 같이 자료형 크기의 맞는 메모리가 1열로 선언한 갯수만큼 생성됩니다. 그래서 배열은 물리적인 위치와 논리적인 위치가 동일하다고 합니다.

  • 배열은 0번 부터 시작합니다. int[10]이면 위치가 1~10가 아닌 0~9입니다. 정리하면 int[] arr = new int[n]라면 인덱스 번호는 0~n-1까지 입니다.

예제

		int[] arr1 = new int[] {1,2,3}; 
		
		int[] arr2 = {1,2,3}; 
		
		int[] arr3;
		arr2 = new int[]{1,2,3}; 
        
        int[] arr4 = new int[3];
        arr4[0] = 1;
        arr4[1] = 2;
        arr4[2] = 3;

위와 같은 방식으로 배열을 입력할 수 있습니다. 배열은 자료형 뒤에 대괄호[]가 붙고 값을 중괄호{}안에 콤마','로 구분하여 넣습니다.

public static void main(String[] args) {
		//1번
		int[] arr = new int[10];
        //2번
	   	for(int i = 0, num =1; i <arr.length ; i++,num++) {
		  arr[i] = num;
		}
		//3번
		int sum = 0;
		for(int i = 0; i<arr.length ; i++) {
			sum += arr[i];			
		}
		System.out.println(sum); //55
        }

배열을 통하여서 1~10까지 합을 구하는 예제입니다.

  • 1번 : Int arr 배열을 선언하고 10개의 인덱스를 입력합니다.
  • 2번 : for문을 통해 배열 arr에 0~9자리에 1~10까지 대입하는 반복문을 작성합니다
  • 3번 : sum 변수를 만들고 arr배열에 대입한 1~10을 더해주는 반복문을 작성하고 마지막에 출력문을 통해 sum을 출력합니다.

		double[] dArr = new double[5];
		
	    dArr[0] = 1.1;
	    dArr[1] = 2.1;
	    dArr[2] = 3.1;
	    
	    double mtotal = 1;
	    
	    for(int i = 0; i<dArr.length; i++) {
	    	mtotal *= dArr[i];
	    }
		
		System.out.println(mtotal);//0
  • 다음예제는 유의사항으로 다음과 같이 5개의 배열 중 3개만 입력한 상황에서 length만큼 반복해서 곱셈을 하였더니 결과값이 0.0이 나왔습니다. 이는 값을 입력하지 않은 dArr[3],dArr[4]가 초기값인 0.0로 잡혀있기 때문입니다.

  • 이 문제를 해결하기 위해 아래와 같이 count 변수를 선언하고 배열에 변수를 대입할 때 마다 conut++을 해주고 조건에 dArr.length대신 count를 넣어주면 결과값을 얻을 수 있습니다.

double[] dArr = new double[5];
		
		int count = 0;
		
	    dArr[0] = 1.1; count++;	
	    dArr[1] = 2.1; count++;
	    dArr[2] = 3.1; count++;
	    
	    double mtotal = 1;
	    
	    for(int i = 0; i<count; i++) {
	    	mtotal *= dArr[i];
	    }
		
		System.out.println(mtotal);//7.161

Q. 배열문제

문자 배열을 생성하고 출력해 보세요.
대문자를 A-Z까지 배열에 저장하고 이를 다시 출력하는 프로그램을 만들어 보세요.

public static void main(String[] args) {
		//1번
		char[] alpahbets = new char[26];
		char ch = 'A';
		//2번		
		for(int i = 0; i < alpahbets.length ; i++) {
		   alpahbets[i] += ch++;
		}
		//3번
		for(int i = 0; i <  alpahbets.length; i++) {
			System.out.println(alpahbets[i]+","+(int)alpahbets[i]);
		}
		
	}
  • 1번 : char alpahbets 배열을 먼저 만들어주고 시작 값인 A를 ch 변수로 선언합니다.
  • 2번 : for문을 만들고 length까지 반복되게 범위를 지정하고 alpabets배열에 A부터++해서 더합니다.
  • 3번 : for문을 만들고 출력문안에 alpabets[i] 와 (int)alpabets[i]를 출력하게합니다. 그러면 A,65 B,66 .....Z,90까지 출력이 됩니다.
profile
배우는 개발 일기

0개의 댓글