티스토리 뷰
변수 대신 배열을 쓰는 이유가 뭘까?
변수는 "자료형의 값 하나만"을 담을 수 있고,
예를들어
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
'language > java' 카테고리의 다른 글
정적 팩토리 메서드 (Static Factory Method) 사용하기 (2) | 2023.04.05 |
---|---|
인터페이스란? 추상클래스와 인터페이스의 차이점은? (0) | 2021.07.23 |
추상 클래스란? (0) | 2021.07.22 |
이차원 배열 dimensional array (0) | 2021.02.03 |
배열 array (0) | 2021.02.03 |
- Total
- Today
- Yesterday
- spring boot 3
- checkout
- bucket4j
- Linux
- QueryDSL
- 배열
- 스프링 스케줄링
- Java
- jvm warm-up 전략
- array
- Spring Security
- redisson 분산락
- 자바 어플리케이션 실행 과정
- addFilterBefore
- port
- dto 클래스 생성자
- JPA
- junit5
- MultipleBagFetchException
- Git
- 스프링오류
- MongoDB
- 추상클래스
- ChatGPT
- n+1
- 티스토리챌린지
- 오블완
- FetchJoin
- Kotlin
- Cannot construct instance of
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |