Java/Basic

[Java_Basic]배열(윤성우의 열혈 Java 프로그래밍)

bangle0621 2021. 1. 2. 11:57

배열

자료형이 같은 둘 이상의 값

 

1차원 배열 생성 방법

 

int[] ref = new int[5];

int[] ref -> int형 1차원 배열 인스턴스를 참조할 수 있는 '참조변수의 선언'

new int[5] -> int형 값 5개를 저장할 수 있는 '배열 인스턴스의 생성'

class ArrayIsInstance{
	public static void main(String[] args){
		//길이가 5인 int형 1차원 배열의 생성
		int[] ar1 = new int[5];

		//길이가 7인 double형 1차원 배열의 생성
		double[] ar2 = new double[7];

		//배열의 참조변수와 인스턴스 생성 분리
		float[] ar3;
		ar3 = new float[9];

		//배열의 인스턴스 변수 접근
		System.out.println("배열 ar1 길이 : " + ar1.length);
		System.out.println("배열 ar2 길이 : " + ar2.length);
		System.out.println("배열 ar3 길이 : " + ar3.length);
	}
}

1차원 배열은 배열의 길이와 상관없이 참조가 가능하다 

int[] ref;

ref = new int[5]; 의 형태이기 때문에

public static void main(String[] args){
	int[] ar = new int[50];
    System.out.println("length : " + ar.length);	//length : 50
    ar = new int[100];
    System.out.println("length : " + ar.length);	//length : 100
}

인스턴스를 저장할 수 있는 배열의 생성도 가능하다.

class Box{
	private String conts;

	Box(String cont){
		this.conts = cont;
	}
	public String toString(){
		return conts;
	}
}

class ArrayIsInstance2{
	public static void main(String[] args){
		Box[] ar = new Box[5];	//길이가 5인 Box형 1차원 배열 생성
		System.out.println("length : " + ar.length);	//length: 5
	}
}

배열의 저장

int[] ar = new int[3];

ar[0] = 7;

class Box{
	private String conts;

	Box(String cont){
		this.conts = cont;
	}
	public String toString(){
		return conts;
	}
}

class BoxArray{
	public static void main(String[] args){
		Box[] ar = new Box[3];

		//배열에 인스턴스 저장
		ar[0] = new Box("First");
		ar[1] = new Box("Second");
		ar[2] = new Box("Third");

		//저장된 인스턴스의 참조
		System.out.println(ar[0]);
		System.out.println(ar[1]);
		System.out.println(ar[2]);
	}
}

class StringArray{
	public static void main(String[] args){
		String[] ar = new String[7];
		ar[0] = new String("Java");
		ar[1] = new String("System");
		ar[2] = new String("Compiler");
		ar[3] = new String("Park");
		ar[4] = new String("Tree");
		ar[5] = new String("Dinner");
		ar[6] = new String("Brunch Cafe");

		int cnum = 0;

		for(int i = 0; i < ar.length; i++)
			cnum += ar[i].length();

		System.out.println("총 문자의 수 : " + cnum);
	}
}

배열 생성

int[] arr = new int[3];        // int arr[] =new int[3] 도 가능하지만 앞의것을 더 선호한다.

배열 생성 및 초기화

int[] arr = new int[] {1,2,3};

int[] arr = {1,2,3};

class ArrayTest{
	public static void main(String[] args){
		int[] ar = {1,2,3,4,5,6,7};
		int sum = sumofAry(ar);
		System.out.println(sum);
	}
	static int sumofAry(int[] ar){
		int sum = 0;
		for(int i = 0; i<ar.length; i++)
			sum += ar[i];
		return sum;
	}
}

배열의 초기화와 배열의 복사

int[] ar = new int[10];    //배열의 모든 요소 0으로 초기화

String[] ar = new String[10];    //배열의 모든 요소 null로 초기화

public static void fill(int [] a, int val)

-> val 값으로 배열 초기화

public static void fill(int[] a, int fromIndex, int toIndex, int val)

->인덱스 from ~ to (-1) 까지의 범위를 val값으로 배열 초기화

 

import java.util.Arrays;

class ArrayUtils{
	public static void main(String[] args){
		int[] ar1 = new int[10];
		int[] ar2 = new int[10];

		Arrays.fill(ar1,7);	//배열 ar1을 7로 초기화
		System.arraycopy(ar1,0,ar2,3,4);	//ar1 을ar2로 부분 복사

		for(int i=0; i<ar1.length;i++)
			System.out.print(ar1[i] + " ");		
		System.out.println();	//단순 줄바꿈

		for(int i = 0; i<ar2.length;i++)
			System.out.print(ar2[i] + " " );
	}
}

class Simple{
	public static void main(String[] args){
		for(int i = 0; i < args.length; i++)
			System.out.println(args[i]);
	}
}

enhanced for문(for-each문)

배열이 등장하면 배열의 순차적 접근을 위해 for문이 나올 수 밖에 없다

이를 줄여서 표현 방법을 제공해야겠다 해서 만들어진것이다.

for(int e : ar){

    System.out.println(e);

}

 

for(요소:배열){

    반복할 문장들

}

class EnhanceFor{
	public static void main(String[] args){
		int[] ar = {1,2,3,4,5};

		//배열 요소 전체 출력
		for(int e : ar){
			System.out.print(e + " " );
		}
		System.out.println();

		int sum = 0;

		//배열 요소의 전체 합 출력
		for(int e : ar){
			sum += e;
		}
		System.out.println("sum : " + sum);
	}	
}

 

2차원 배열 생성과 접근

길이가 4개인 배열을 3개 묶어서 사용하겠다.

class TwoDimenArray{
	public static void main(String[] args){
		int[][] arr = new int[3][4];
		int num = 1;

		//배열에 값을 저장
		for(int i = 0; i < 3; i++){
			for(int j = 0; j<4;j++){
				arr[i][j] = num;
				num++;
			}
		}

		//배열에 저장된 값을 출력
		for(int i = 0; i<3; i++){
			for(int j = 0; j<4;j++){
				System.out.print(arr[i][j] + "\t");
			}
		System.out.println();
		}
	}
}

2차원 배열의 초기화 

int[][] arr = new int[][]{

    {11,22,33},

    {44,55,66},

    {77,88,99}

};

class PartiallyFilledArray{
	public static void main(String[] args){
		int[][] arr = {
			{11},
			{22,33},
			{44,55,66}
		};

		//배열의 구조대로 내용 출력
		for(int i = 0; i < arr.length; i++){
			for(int j = 0;j<arr[i].length;j++){
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}
}