티스토리 뷰

language/java

배열 array _1

daeuun 2021. 2. 3. 13:21

 

변수 대신 배열을 쓰는 이유가 뭘까?

 

 

 

 

변수는 "자료형의 값 하나만"을 담을 수 있고,
예를들어

int a = 10;
a = 20;
 
배열은 "자료형의 값 여러개"를 담을 수 있는 개념이다.

int[] a = new int[3];

여러개의 데이터를 담을 때를 대비해서 배열을 만들었다! (= 세개의 상자를 만들래!)
여기에 [0] [1] [2] 상자마다 번호가 생성된다.
a[0] = 5;
a[1] = 10;
a[2] = 15;

 

 

 

여기서, 변수 대신 배열을 쓰는 이유!

변수는 일일히 매번 선언해야 하는 번거로움과, 여러개의 변수 선언은 오류가 날 가능성이 매우 높은 문제가 있다.

int num1 = 0;

int num2 = 0;

int num3 = 0;

int num4 = 0;

int num5 = 0;

 

 

또, 변수 출력은 반복문이 사용불가능하기 때문에 일일히 출력해야 한다!!

System.out.println(num1);

System.out.println(num2);

System.out.println(num3);

System.out.println(num4);

System.out.println(num5);

 

for(int int=1; int<=5, i++){

     System.out.println(numi);  => 반복문으로 출력하면 오류 발생함

}

 

 

 

 

 

1. 배열 선언하는 방법은?

자료형에 대해 []를 선언함으로 (자료형 옆에 []을 적으면) 배열을 지정할 수 있다. 

 

먼저, (1)arr이라는 배열 이름을 정하고 (2)int형 변수를 설정한다.
(3)마지막으로 int형 데이터를 담을 상자 5개를 새롭게 만들어줘! (=배열지정, 자료형[]) 입력하기

int[] arr = new int[5];

 

 

 

배열을 선언 했으면, 다음으로는 배열의 각 인덱스 자리[]에 값 대입해주면 된다.
2. 배열이름[인덱스] = 대입할 값;

arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;

 

 

배열의 가장 큰 장점은 변수에서 못했던 반복문을 사용할 수 있는 점이다.

3. = 대입할 값을 반복문으로 구할 수 있다!
for(int i=0; i<=4; i++) {
arr[i] = i;

}

 

 

변수와 배열의 차이점을 말할 때 나오던 자료형의 의미는

boolean, char, byte, short, int, long, float, double으로 선언한 변수로

실제 값을 바로 담을 수 있는 변수이다. 일반 변수라고 한다.
  
그 외 자료형의  int[], double[], char[], short[], ... , String, Scanner, ... 으로 선언된 변수로
주소값을 담고 있는 변수이다.  참조변수(레퍼런스 변수)임!

 

 

 

 

 

배열의 크기를 알아낼 수 있는 방법도 있다.


iArr이라는 배열 이름을 정하고, int형 변수에 배열을 지정한다 int[].

거기에 int형 데이터를 담을 상자 3개를 만들어줘!

int[] iArr = new int[3];                       => 0번 1번 2번 상자 만들어짐
double[] dArr = new double[3];    => 0번 1번 2번 상자 만들어짐

 

System.out.println(iArr[1]);  

System.out.println(dArr[0]);

 

출력:
0

0.0 (double형이니까)

 

 

 

4. 여기서 배열의 크기를 알아낼 수 있는 방법?
배열 이름에 .length를 붙이면 된다!

 

System.out.println("iArr배열의크기 " + iArr.length);

System.out.println("dArr배열의크기 " + iArr.length);

 

출력:

iArr배열의 크기 : 3   ( = 데이터 담을 상자 3개)
dArr배열의 크기 : 3 ( = 데이터 담을 상자 3개)

 

 

 

변수 출력은 반복문 사용할 수 없었는데, 배열의 대입할 값 지정은 반복문 사용이 가능하다!

*배열이름[인덱스] 반복하기

 

for(int i=0; i<iArr.lgntgh; i++){

     System.out.println(iArr[i])

}

데이터가 들어있는 상자를 열어서, 안에 들어있는 데이터가 뭔지 알고싶다 

5. => 상자의 크기만큼(배열이름.lgneth) 출력을 반복시켜 for() 값을 알아낸다!

각 상자는 인덱스라는 번호가 매겨져있음!

 

(1) 인덱스는 무조건 0에서 부터 시작하니까 i=0; 이 시작값이 된다.

(2) 인덱스 [0] [1] [2] 에서 마지막 인덱스는 3개의 상자-1 값이 된다.

=> 배열의 크기 - 1 = 마지막 인덱스 숫자 => 여기까지 1씩 증가하면서 반복문 돌리면 된다~!!!

 

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

     System.out.println(dArr[i]) 

}

 

출력:

0

0

0

0.0

0.0

0.0

 

 

 

 

 

 

6. 반복문을 이용해서 결과값을 얻고, 결과값의 총합계까지 구하기

 

int[] arr = new int[5];


arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
.....
arr[10] = 10;

이런 결과값을 얻고 싶다!

 

 

(1) for문을 이용해서 값을 대입할 수 있다.

for(int i=0; i<arr.lenght; i++){
System.out.println(arr[i] + 1)     => 결과값은 arr[i] i에서 1씩 증가된 값이니까!

}

 

 

(2) 값을 다 구했으면? sum을 이용해서 구한 값의 총합계를 구할 수 있다!!

 

먼저 sum변수 선언하고 초기화해주기! (아직 sum에 더해진거 없으니까 0값임)

int sum = 0; 

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

System.out.println(arr[i] + " ")   => 구하고 싶은 값 출력

sum += arr[i]                        => 출력한 값을 계속해서 더해나가기 +=(복합연산자) => 총합계

}

System.out.println("총 합계 : " + sum)

 

 

 

 

 

7.  인덱스의 결과값을 랜덤으로 구하기

 

int[] arr = new int[10]; 

(1) 0번 인덱스 ~ 마지막 인덱스에서 (2) 결과값을 51~100사이의 랜덤값 구하기

 

 

(1) 0번 인덱스에서 시작해서 ~ 마지막 인덱스 = 배열의 크기 - 1

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

 

(2) arr[i] 의 결과값이 51~100사이의 랜덤값이다. 

(Math.random()메소드 호출하고, * 구하고 싶은 값의 갯수 + 시작값)을 int 로 묶어주면 된다.

      (int)(arr[i] = Math.random() * 50 + 51)

    }

 

 

출력하기

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

}

 

 

 

작성해보면 이런 코드가 나오게 됨!

 

출력 : 

 

arr[0] : 94 (랜덤값)

arr[1] : 78 

arr[2] : 65

arr[3] : 61 

...

arr[10] : 78

 

 

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함