ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Array
    Java-diary/REFERENCE TYPE 2020. 3. 27. 21:11
    요약
    array정의 변수의 반복사용을 효율적으로 줄이는 기능
    변수와 배열 비교 stack과 heap
    array 선언 자료형[] 변수명 또는 자료형 변수명[] 정의, 변수명 = new 자료형[n]
    array와 반복문 FOR(조건){m[i] = for문의 변수를 이용한 수식}
    규칙성이 없는 경우 int[]a = {수}
     
     
    Java Data Type
    ㄴ Reference Type
    ㄴ Class Type
    ㄴ Interface Type
    ㄴ Array Type
    ㄴ Enum Type
    ㄴ etc.
     
     
    ------------------------------------------------------------------------------------------------------------------------------------
    array란?
    자료형 [] 변수이름 = new 자료형[총 INDEX];
    변수를 하나씩 대입하고 하나씩 출력해 반복하는 일을 효율적으로 처리할 수 있도록 하는 기능.
     
     
    int[] m; <-변수 선언
    m = new int[3];
    for 반복문 <-변수 대입& 출력
     
    *array의 특징
    배열 : 같은 타입의 데이터를 하나의 이름으로 묶어서 처리해주는 기능
    참조형 변수(reference type)에 해당된다.
    인덱스의 번호는 0번 부터
    배열의 인덱스를 사용해서 배열의 각 요소에 접근
    배열과 일반 변수와의 구분
    배열을 선언만 하면 메모리에 생성은 되지만 값을 담을 수 있는 요소가 만들어지지 않는다.
    new 연산자에 의해서 공간이 만들어진다.
    -------------------------------------------------------------------------------------------------------------
    변수와 배열 비교
    stack메모리와 heap메모리에서 저장되는 부분이 다르다.
     
    변수의 경우 stack에 저장 되고
     
    배열의 경우 heap에 APT형 변수로 만들어 진 후에 HEAP에 저장된 위치를 적은 정보를 STACK에 저장하게 된다.
    이러한 주소를 참조값이라고 한다.
    [I@15db9742 <-주소
     
    --------------------------------------------------------------------------------------------------------------
    array 선언
     
    자료형[] 변수명 또는 자료형 변수명[] 정의
    ex) int[]m; or int m[] <-m은 배열이다.
     
    배열의 크기 정의
    변수명 = new 자료형[n] <-n은 수이며 배열의 원하는 크기를 지정한다.
    ex)
    int[] m ;
    m = new int[3]; <-int크기의 변수 3개를 만들어라.
    new int[3]은 배열의 주소를 일컫는다.즉 m을 출력하게 되면 주소가 나온다.
     
     
    *INDEX
    배열을 이루고 있는 변수들
    APT형 변수라 아파트 층수처럼 이름을 붙인다 .
    ------
    |M[2]|
    |M[1]| <- M[0],M[1],M[2] 즉 각각의 층수를 INDEX라고 부른다.
    |M[0]|
    ---------------
    ------------------------------------------------------------------------------------------------------------
    ARRAY와 반복문
    배열은 반복문으로도 쓸수가 있다.
    FOR(조건){m[i] = for문의 변수를 이용한 수식}
    ex)
     
    for (int i = 0; i < 3; i++) {
    m[i] = (i + 1) * 10;
    System.out.println("m[" + i + "]:" + m[i]);
    }
     
     
     
    *주의사항
    1)
    for문을 이용한 배열 사용에서 for문의 조건중 조건문의 비교표현에서 i<=는 안된다 즉 같다는 사용할 수가 없다.
     
    2)
    배열의 크기 선언에 대해서 수를 세는데 있어 0부터 시작하기 때문에 for문의 조건식에서 범위 지정에
    오류가 많이난다. 오류를 방지하기위해 array변수.length로 표현을 한다 .
     
    종합
    k = new int[7];
     
    for (int x = 0; x < k.length; x++) {
    k[x] =(-1)*2*x; // <-(i+1)을 해주어야 용량 1칸을 더 안먹는다 .
    System.out.println(k[x]);
     
     
     
    -------------------------------------------------------------------------------------------------------------
    규칙성이 없는 경우
    int[]a = {수}
    규칙성이 없는 경우엔 for문 식으로 표현할 수없고 하나하나 대입후 선언을 해야한다 .
     
    이를 조금더 편리하게 하기위해
    array 선언을 하자마자 값에 대입하는 방법이 있다.
     
     
    ex)
     
    int[]a = {10,50,30,40,60}; <-몇 칸 만들지를 지정하지 않아도 된다.
    int[]b = {20,10,90,120,160};
     
    int[]c;
    c=new int[5];
     
    for (int i = 0; i < c.length; i++) {
     
    c[i]=a[i]+b[i];
    System.out.println(c[i]);
    }
     
    ------------------------------------------------------------------------------------------------------------------
    array 문자 타입
    char[] 변수 ={'',''}
    String[]변수={" "}
     
    ex)
    출력된 문자열은 거꾸로 표현하기
    char[] b = { 'j', 'a', 'v', 'a', ' ', 'w', 'o', 'r', 'l', 'd' };
     
     
     
    for (int i = b.length-1; i>=0;i--) { <-조건을 만족해야 반복한다.i값을 array의 길이만큼 해주면 오류날 일이 없다.
    System.out.print(b[i]);
    }

    댓글

Designed by Tistory.