JVM 메모리 구조, 배열(Array)

oYJo·2024년 12월 17일

Java

목록 보기
12/25
post-thumbnail

배열(Array)

JVM 메모리 구조(참고)

배열

같은 자료형의 변수를 하나의 묶음으로 다루는 것
배열은 저장된 값마다 인덱스 번호가 0부터 시작하여 설정

배열 선언

자료형[ ] 배열명 ;
자료형 배열명[ ] ;

배열 할당

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

ex) int[] arr = new int[3];
int arr[] = new int[3];

배열 저장구조

배열은 참조 변수로 Heap영역에 할당되며 배열 공간의 주소를 저장
배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리

배열 초기화

  • 인덱스를 이용한 초기화
    ex) arr[0] = 1;
    arr[1] = 2;
  • for문을 이용한 초기화
    ex) for(int i = 0; i < arr.length; i++) {
    arr[i] = i; }

index가 순차적으로 증가함에 따라 초기화할 리터럴 값이 규칙적이라면 반복문을 통해 배열 초기화 가능

  • 선언과 동시에 초기화
    ex) int[] arr = {1, 2, 3, 4, 5};
    int[] arr = new int[] {1, 2, 3, 4, 5};
    String fruit[] = {"사과", "포도", "참외"};

배열 실습 문제

문제 안내

실습문제 1

class ArrayPractice

	public void practice1(){

		int [] arr = new int[9]; // 길이가 9번째 배열 선언 0 1 2 3 4 5 6 7 8 9

		int sum = 0;
		for(int i=0; i< arr.length; i++) { // 0~9
			arr[i] = i+1; // [0] = 1, [1] = 2 ...
			System.out.print(arr[i] + " ");

			if(i % 2 == 0 ) {
				sum += arr[i];
			}
		}
		System.out.println();
		System.out.println("짝수 번째 인덱스 합 : " + sum);
	}

실습문제 2

class ArrayPractice

	public void practice2() {

		int [] arr = new int[9]; // [0]~[9]

		int sum = 0;
		for(int i=0; i<arr.length; i++) {
			arr[i] = 9-i; // [0] = 9 [1] = 8 [2] = 7
			System.out.print(arr[i] + " ");

			if(i % 2 > 0 ) {
				sum = sum + arr[i];
			}
		}
		System.out.println();
		System.out.println("홀수 번째 인덱스 합 : " + sum);
	}

실습문제 3

class ArrayPractice

	public void practice3() {
		Scanner sc = new Scanner(System.in);
		System.out.print("양의 정수 : ");
		int input = sc.nextInt(); // 5

		int[] arr = new int[input]; // [0]~[5]

		for(int i=0; i<arr.length; i++) {
			arr[i] = i+1; 
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}

실습문제 4

class ArrayPractice

	public void practice4() {
		Scanner sc = new Scanner(System.in);

		int[] arr = new int[5];

		for (int i = 0; i < arr.length; i++) {
			System.out.print("입력 " + i + " : ");
			arr[i] = sc.nextInt();
		}
		System.out.print("검색할 값 : ");
		int search = sc.nextInt();

		boolean flag = false;

		for (int i = 0; i < arr.length; i++) {
			if (search == arr[i]) {
				System.out.println("인덱스 : " + i);
				flag = true;
				break;
			}
		}
		if (flag == false)
			System.out.println("일치하는 값이 존재하지 않습니다.");
	}

실습문제 5

class ArrayPractice

	public void practice5() {
		Scanner sc = new Scanner(System.in);

		System.out.print("문자열 : "); 
		String input = sc.nextLine(); // hello

		char[] arr = new char[input.length()]; // hello 길이만큼 0~5
		for(int i=0; i<arr.length; i++) { 
			arr[i]=input.charAt(i); // [0] = h , [1] = e
		}

		int count=0; // count 몇 개

		System.out.print("문자 : ");
		char ch = sc.next().charAt(0);

		System.out.printf("%s에 %s가 존재하는 위치(인덱스) : " , input, ch);
		for(int i=0; i<arr.length; i++) {
			if(ch == arr[i]) {
				System.out.print(i + " ");
				count++;
			}
		}
		System.out.println();

		if(count > 0) {
			System.out.println(ch + " 개수 : " + count);
		} else {
			System.out.println("존재하지 않습니다");
		}
	}

실습문제 6

class ArrayPractice

	public void practice6() {
		Scanner sc = new Scanner(System.in);
		int sum = 0;

		System.out.print("정수 : "); 
		int input = sc.nextInt();

		int[] arr = new int[input];

		for(int i=0; i<arr.length; i++) {
			System.out.print("배열 " + i + "번째 인덱스에 넣을 값 : ");
			arr[i] = sc.nextInt();
			sum += arr[i];
		}
		for (int i = 0; i < arr.length; i++)
			System.out.print(arr[i] + " ");

		System.out.println("\n총 합 : " + sum);
	}

실습문제 7

class ArrayPractice

	public void practice7() {
		Scanner sc = new Scanner(System.in);
		System.out.printf("주민등록번호(-포함) : ");
		String str = sc.nextLine();

		char [] arr = new char[str.length()];

		for(int i=0; i<arr.length; i++) {

			if(i>=8) {
				arr[i] ='*';
				System.out.print(arr[i]);
			} else {
				arr[i] = str.charAt(i);
				System.out.print(arr[i]);
			}
		}

class PracticeRun

package edu.kh.array.practice;

public class PracticeRun {
	public static void main(String[] args) {
		ArrayPractice arrEx = new ArrayPractice();

//		arrEx.practice1(); // O
//		arrEx.practice2(); // O
//		arrEx.practice3(); // O
//		arrEx.practice4(); // O
//		arrEx.practice5(); // O
//		arrEx.practice6(); // O
//		arrEx.practice7(); // O
//		
	}
}
profile
Hello! My Name is oYJo

0개의 댓글