Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 코딩클럽 부트캠프 배열(Array), 다형성(1차원, 2차원, 3차원) 본문

Java

스파르타 코딩클럽 부트캠프 배열(Array), 다형성(1차원, 2차원, 3차원)

H.S-Backend 2024. 5. 7. 21:55
여러개의 변수를 같은 곳에 모아서 저장할 때 
한번에 많은 양의 데이터를 계산할 때
배열을 사용한다

선언 -> [ ]

//일반적인 선언방식
int[] intArray;     //정수배열
long [] longArray;  
double [] doubleArray; //실수배열
char [] charArray; // 문자배열
String [] stringArray; //문자열 배열

 

//배열선언
//2번째 선언방식
int intArray[]; //정수배열
long longArray[]; 
double doubleArray[]; //실수배열
char charArray[]; //문자배열
String stringArray[]; //문자열배열

생성은 new 명령어를 통해 생성 후  [ ] 대괄호를 사용해 크기를 지정한다.

각 칸마다 순번이 있다.

public class Array02 {
    public static void main(String[] args) {
        // 배열 생성

        //배열 생성후 초기화하면 배열의 주소가 할당된다.

        int[] intArray = new int[3];  //초기값 {0, 0, 0}
        boolean[] boolArray = new boolean[3]; //초기값{false, false, false}
        String[] stringArray = new String[3]; //{"", "", ""}
        
        //배열 선언만 해놓고 나중에 초기화를 할 수 있다.
        int[] intArray2;
        intArray2 = new int[3]; //초기값 {0,0,0}
    }

배열안에 담겨있는 변수들을 하나씩 꺼내사용하는것을

순회라 한다.
//배열 단건조회
int[] intArray3 = new int[3]; //모두 0으로 초기화된 사이즈3의 배열 생성

//배열에서 2번째 순번의 값을 출력.
System.out.println(intArray3[1]);
//출력 0

 

배열 순회

.lengh() 

배열의 길이값

//길이가 3인 정수배열 선언
int[] intArray4 = new int[3];

//배열이 초기화된 값을 출력
for(int i=0; i<intArray4.length; i++){
    System.out.println(intArray4[i]);
}
//출력 0, 0, 0

배열 초기화 및 입력

package arr;

import java.util.Arrays;

public class Array03 {
    public static void main(String[] args) {
        //1. 배열에 특정값 대입하며 선언
        int[] intArray = {1, 2, 3, 4, 5};
        String[] StringArray = {"A", "B", "C", "D", "E"};

        //2. for문을 통해 값을 대입한다.
        for(int i=0; i<intArray.length; i++){
            intArray[i]= i;
        }
        //3.향상된 for문을 통해 값을 대입
        for(int i : intArray){
            System.out.print(i); //0, 1, 2, 3 , 4
        }

        System.out.println("=======================");

        //4. 배열의 주소를 모두 같은값으로 초기화
        Arrays.fill(intArray, 1); //배열의 모든 값을 1로 초기화한다

        for(int i : intArray){
            System.out.print(i); //1, 1, 1, 1, 1
        }
    }

}

얕은복사

변수명은 서로 다르지만 같은 값을 같고 있다.

 

public class Array04 {
    public static void main(String[] args) {
        //얕은 복사
        int[] a ={1, 2, 3, 4};
        int[] b = a; //얕은복사
        b[0] = 3; //b배열의 0번째 값을 3으로 수정
        System.out.println(a[0]); //출력 3
    }
}

 

깊은복사

새로운 배열을 똑같이 만들고 싶을 때 사용한다.

import java.util.Arrays;

public class Array05 {
    public static void main(String[] args) {
        int[] a= {1, 2, 3, 4};
        int[] b = new int[a.length];

        for(int i = 0; i<a.length; i++){
            b[i]= a[i]; //깊은복사
        }
        b[0] = 3; //b 배열의 0번째 순번값을 3으로 수정
        System.out.println(a[0]); //1출력
        System.out.println(b[0]); //3출력

        //깊은 복사 메서드
        // Arrays.copyOf()
        int[] c = {1 ,2 ,3 , 4};
        int[] d = Arrays.copyOf(c, c.length);
        //배열과 함께 length값도 같이 넣어준다


    }
}

String 배열 

//String 배열을 아래와 같이 선언 생성
String[] StringArray = new String[3];
public class Array06 {
    public static void main(String[] args) {
        //String 배열을 아래와 같이 선언 생성
        String[] stringArray = new String[3];

        //선언 후 하나씩 초기화 할 수 있다.
        stringArray[0] = "val1";
        stringArray[1] = "val2";
        stringArray[2] = "val3";
        
        //선언과 동시에 초기화 할 수 잇다.
        String[] stringArray1 = new String[] {"val1", "val2", "val3"};
        String[] stringArray2 = {"val1", "val2", "val3"};
    }
    
}

문자열 = 문자배열

char = 문자배열

String = 문자열

기본형 변수는 소문자로 시작

참조형 변수는 대문자로 시작

메서드
응답값 타입
설명
length()
int
문자열의 길이를 반환한다.
charAt(int index)
char
문자열에서 해당 index의 문자를 반환한다.
substring(int from, int to)
String
문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
equals(String str)
boolean
문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다.
toCharArray()
char[]
문자열을 문자배열(char[])로 변환해서 반환한다.
new String(char[] charArr)
String
문자배열(char[]) 을 받아서 String으로 복사해서 반환한다.
package arr;

public class Array07 {
    public static void main(String[] args) {
        String str = "ABCD";

        //length()
        int strLength = str.length();
        System.out.println(strLength);  //4출력

        //charAt(int index)
        char strChar= str.charAt(2); //순번은 0부터 시작해서 2는 3번째
        System.out.println(strChar); //C출력

        //substring(int from, int to)
        String strSub = str.substring(0, 2);  //0~2번째 까지 출력
        System.out.println(strSub);  //ABC출력

        //equals (String str)
        String newStr = "ABCD";  //str 값과 같은 문자열 생성
        boolean strEqual = newStr.equals(str); //boolean타입의 strEqual은 newStr안의 str과 같다.
        System.out.println(strEqual);  //true출력한다

        //toCharArray()
        char[] strCharArray = str.toCharArray(); //String을 char[]로 변환한다.
        
        //반대로 char[]를 String으로 변환하기
        char[] charArray = {'A', 'B', 'C'};
        String charArrayString = new String(charArray);
        System.out.println(charArrayString); //ABC출력
    }
}

 

다형성

1차원 []

2차원 [] []

public class Array08 {
    public static void main(String[] args) {
        //중괄호를 사용해 초기화
        int[][] array = {
                {1, 2, 3},
                {4, 5, 6}
        };
    }
}
int[][] array = new int[2][3]; //최초로 선언한다
for(int i = 0; i < array.length; i++){
    for(int j =0; j <array[i].length; i++){
        array[i][j] = 0; // i, j는 위 박스안에 숫자를 의미

가변배열

행마다 다른 길이의 배열을 저장할 수 있는 배열

package arr;

public class Array09 {
    public static void main(String[] args) {
        //가변 배열

        //선언 및 초기화
        int [][] array = new int[3][];
        //배열 원소마다 다른 크기로 지정
        array[0] = new int[2];
        array[1] = new int[4];
        array[2] = new int[1];

        //중괄호 초기화 할 때 원소배열 크기를 다르게 생성 가능
        int[][] array2 = {
                {10, 20},
                {10, 20, 30, 40},
                {10}
        };
    }
}
//3차원 배열
// 중괄호 3개를써서 3차원 배열 초기화 가능
int [][][] multiArray = {{{1,2}, {3,4 }}, {{5, 6}, {7, 8}}};

다차원 배열 조회

package arr;

public class Array10 {
    public static void main(String[] args) {
        //가변 2차원 배열 조회
        int[][]array = {
                {10, 20 , 30},
                {10, 20, 30, 40},
                {10, 20}
        };
        for(int i=0; i < array.length; i++){ //1차원 길이 3을 돌아가며 순회
            for(int j=0; j < array[i].length; j++){ //2차원 길이는 3, 4, 2 
                System.out.println(array[i][j]); // 2중반복문으로 i, j인덱스를 순회
            }
            //1차원 길이를 0부터 순회 할동안 j는 순회하면서 출력
        }
    }
}

//최대값 초기값 세팅
    int max = arr[0];
    //최대값 구하기
    for(int num : arr){ //반복문을 돌면서 arr값이 num에 입력되며
        if(num > max){  //if (num)에 대입이되며 max의 값과 비교
            max = num;  //5가 입력되며 max는 0으로 변경
        }
    }
    System.out.println(max); //5출력
}
  //최소값 구하기
    int[] arr= { 3, 2, 1, 4, 3 };
    //최소값 초기 세팅
    int min = arr[0];
    System.out.println(min);
    //최소값 구하기
    for(int num : arr) { //arr가 num에 대입되면서
        if (num < min) {  //min은 3이기에 2번째 2가 대입되며서 저장됬다가, 1이 최종 작은수로 저장
            min = num;    //min이 최종 작은값이 1이기에
        }
    }
    System.out.println(min); //1이 출력
}

 

https://hs-backend.tistory.com/47

 

스파르타 코딩클럽 부트캠프 (Java 문법 2장)

피연산자와 연산자란계산할 때 계산의 대상이 되는것이 피연산자.계산의 목적이 되는것이 연산자 연산자 덧셈 뺄셈처럼 계산할 기호피연산자 연산자로 인해 계산되는 숫자 package Week02;public

hs-backend.tistory.com

반응형