ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java_Basic]배열(윤성우의 열혈 Java 프로그래밍)
    Java/Basic 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();
    		}
    	}
    }

    댓글

Designed by Tistory.