java,jsp,spring/java

java 배열

프루트 2022. 7. 18. 20:09

배열

 - 여러 데이터를 하나로 묶은 것(일련의 공간을 여러 칸으로 나눈 것)

  • 수많은 데이터를 단 하나의 변수로 관리할 수 있고, 코드 효율을 높일 수 있음
  • 배열의 값은 모두 같은 타입이어야 함
  • 배열의 길이는 변하지 않음, 배열의 길이는 length 키워드를 통해 가져올 수 있음

배열 만들기

  • 초기화를 통한 생성 : 중괄호 안에 초깃값 명시
  • 길이 지정을 통한 생성
  • 배열 타입에 따라 초깃값 결정 : 정수(0), 실수(0.0), 논리형(false), 문자열(null)

  • 일차원 배열 생성

  • 잘못된 예시
int intArray[10]; // 인덱스 값을 넣으려면 배열을 생성 해야함
  • 배열을 초기화 하면서 생성

  • 배열 인덱스와 원소 접근

n = intArray[-2]; // 인덱스는 0부터 시작이므로 오류
n = intArray[5]; // 길이가 5인 배열이면 인덱스는 0~4이기 때문에 오류

int intArray [];
intArray[1] = 8; // 배열을 선언만 했으므로 오류
  • 레퍼런스 치환과 배열 공유

  • 배열의 크기, length 필드

  • 메소드로 배열 전달

public class Ex3_7 {
	public static void main(String[] args) {
		int evens[] = {0,2,4,6,8,10,12,14,16,18};
		int primes[] = {2,3,5,7,11,13,17,19};
		
		int evenSum = sum(evens);
		int primeSum = sum(primes);
		
		System.out.println("짝수 배열의 합: "+evenSum);
		System.out.println("소수 배열의 합: "+primeSum);
	}
	public static int sum(int[] arr) {
		int sum = 0;
		
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		return sum;
	}
}
  • 문자 타입과 배열
    • 문자열은 toCharArray()메소드를 통해 문자의 배열로 바뀔 수 있음
String str = "ABCD";
char[] charArr = str.toCharArray();
//char[] charArr = {'A', 'B', 'C', 'D'};

public class Ex3_8 {
	public static void main(String[] args) {
		String str = "Programming is fun! Right?";
		char[] charArr = str.toCharArray();
		int count = 0;
		
		for (int i = 0; i < charArr.length; i++) {
			if (charArr[i] == 'R' || charArr[i] == 'r') {
				count++;
			}
		}
		System.out.println(str);
		System.out.println("=> R(r)의 갯수 : "+count);
	}
}
  • 2차원 배열
    • 기본 배열(일차원 배열)을 묶어 새로운 배열을 이루는 형태
int[] row1 = {1,2,3,4};
int[] row2 = {5,6,7,8};
int [][] matrix = {row1, row2};

// 학년별 1, 2 학기 성적 저장
// 4년간 전체 평점 평균
public class Ex3_10 {
	public static void main(String[] args) {
		double score[][] = {{3.3, 3.4},
												{3.5, 3.6},
												{3.7, 4.0},
												{4.1, 4.2}};
		double sum = 0;
		
		for (int i = 0; i < score.length; i++) {
			for (int j = 0; j < score[i].length; j++) {
				sum += score[i][j];
			}
		}
		int n = score.length; // 4
		int m = score[0].length; // 2
		System.out.println("4년 전체 평점 평균은 "+sum/(n*m));
	}
}

  • lenght 필드

     -  i.length; > 행의 크기    |      i[0].length; > 열의 크기

    • 정방형 정방형 / 비정방형 배열

정방형 배열
비정방형 : 배열을 생성할 대 열의 값을 비워두고 생성 후 입력

  • 삼차원 배열
    • 이차원 배열을 묶어 만든 배열
    int [][][] cube = {
    	{
    		{1,2,3,4} ,
    		{5,6,7,8}
    	},
    	{
    		{9,10,11,12},
    		{13,14,15,16}
    	}
    };