일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AP
- 시그모이드
- Kaggle
- 알파폴드
- bioinformatics
- 생명정보학
- 이항분포
- 오류역전파
- ncbi
- AP Computer Science A
- 결정트리
- SVM
- 블록체인
- 인공신경망
- 서열정렬
- 바이오파이썬
- Java
- 인공지능 수학
- 행렬
- 생물정보학
- 인공지능
- 바이오인포매틱스
- 딥러닝
- COVID
- 캐글
- 자바
- MERS
- 파이썬
- CNN
- BLaST
- Today
- Total
데이터 과학
배열 (array) 본문
변수가 많아지거나 순차적인 자료구조 형태로 데이터를 입력하거나 출력할 때 배열이라는 방법을 사용합니다.
입력값이 많아지면 아래와 같은 형태로 선언을 해야 하는데
int a = 123;
int b = 456;
int c = 789;
....
변수 이름을 많이 만들어야 합니다.
아파트에 물건을 배달하려고 한다면 김 아무개집, 박아무개집, 최아무개 집 이렇게 찾는 것보다는 층별로 되어 있어서 몇 동 몇 호 이렇게 부여하는 것이 편리하죠. 물론, 과거에는 동네마다 몇 집 안 되어서 주소 없이 찾아가도 되었겠지요.
지금은 아파트에 101동 101호 이렇게 찾는게 편합니다. 어떻게 보면 아파트의 주소 구조는 2차원 배열이라고 볼 수 있겠습니다.
배열은 0부터 표기합니다. 500개의 변수를 표현한다고 한다면 0부터 499까지 숫자를 표현하는 것입니다.
선언 방법-
<데이터 형>[ ] <변수 이름>;
<데이터 형> <변수 이름>[ ];
double[ ] data=new double[25];
double data[ ]=new double[25];
이렇게 변수 이름에 대괄호를 [ ] 붙이거나 데이터 형식에 대괄호를 [ ] 붙이거나 하면 됩니다. 위치는 상관없습니다.
double data[ ];
data =new double[25];
이렇게 선언부와 구현부로 나눠서 2줄로 선언을 해도 됩니다.
이렇게 선언을 하면 참조형 데이터로 25개의 변수 방을 만들어 냅니다.
물론, 0~24개까지 지정되겠죠.
하나의 예제를 봅시다. 아래의 예제는 총 4개의 배열방을 만들어서 데이터를 1,2,3,4를 넣어 연산을 하는 예제입니다.
결과는 같은데 배열을 선언하는 방법이 조금 다릅니다.
Main.java 예제는 list라는 이름으로 int 정수형을 선언하여 각각 값을 할당하는 방법이며, array_test.java 예제는 { } 중괄호를 사용해서 값을 입력하는 방법인데, 배열방을 하나씩 만들어서 데이터를 넣어야하는 귀찮음으로 인해 후자를 많이 사용합니다.
public class Main{
public static void main(String[] args) {
int list[]=new int[4];
list[0]= 1;
list[1]= 2;
list[2]= 3;
list[3]= 4;
changeArray(list);
System.out.println("The changed list is");
for (int num=0; num <4 ; num++)
System.out.println(list[num] + " ");
}
public static void changeArray(int[] b) {
for (int i=0; i<4; i++)
b[i]+=3;
}
}
or
public class array_test{
public static void main(String[] args) {
int[] list= {1,2,3,4};
changeArray(list);
System.out.println("The changed list is");
for (int num=0; num <4 ; num++)
System.out.println(list[num] + " ");
}
public static void changeArray(int[] b) {
for (int i=0; i<4; i++)
b[i]+=3;
}
}
결과는
The changed list is
4
5
6
7
Main.java나 array_test.java예제는 3씩 증가가 된 결과가 나옵니다.
array_test.java예제는 int[] list= {1,2,3,4}; 에서는 값을 list에 넣고 이 값은 changeArray(list); 메소드로 호출이 됩니다.
list가 가리키고 있는 주소 값이 통째로 전달이 됩니다. pass by address입니다.
list 주소 값은changeArray(int[] b) 에 가서 b에 전달을 하겠죠.
결국은 list와 b는 같은 주소를 가지고 있습니다.
b주소 값은 {1,2,3,4}를 가지고 있죠.
b[i]+=3; b[0]이 가지고 있는 값은 1입니다. 여기서 3을 더하고,
b[1]이 가지고 있는 값은 2입니다. 여기에 3을 더하고,
b[2]이 가지고 있는 값은 3입니다. 여기에 3을 더하고,
b[3]이 가지고 있는 값은 4입니다. 여기에 3을 더하고,
for문을 빠져나옵니다.
이후에 for (int num=0; num <4 ; num++) 구문이 실행되겠죠.
결과는 list[num]에서 for문이 0부터 3까지 그 안에 있는 값이 출력되겠죠.
도식화시키면 아래와 같습니다.
public class array_sum{
public static void main(String args[]){
int array[]=new int[2]; // Array는 클래스 명이므로 변수명이 될 수 없습니다. int sum1=0,sum2=0;
for(int i=1; i<101; i++){
if(i%2==1)
array[0]+=i;
else
array[1]+=i;
}
//array[0] 홀수의 합을 구한것을 배열에 넣어줍니다.
//array[1] 짝수의 합을 구한 것을 배열에 넣어줍니다.
System.out.println("홀수의합:"+array[0]); //0번째 배열에 있는 값 출력
System.out.println("짝수의합:"+array[1]); //1번째 배열에 있는 값 출력
}
}
결과:
홀수의합:2500
짝수의합:2550
2차원 배열
int[ ][ ] a= new int[3][2];
세로 column과 가로 row에 대한 배열로 표현입니다. 행렬(matrix) 구조이고 가장 많이 사용하는 배열입니다.
2차원 배열의 크기는 세로줄로 그 크기가 결정됩니다.
public class Narray {
public static void main(String[] args) {
int[][] a= {
{10,20},
{30,40},
{50,60}
};
System.out.println("a[0][0]=" + a[0][0] + " a[0][1]= " + a[0][1]);
System.out.println("a[1][0]=" + a[1][0] + " a[1][1]= " + a[1][1]);
System.out.println("a[2][0]=" + a[2][0] + " a[2][1]= " + a[2][1]);
}
}
결과:
a[0][0]=10 a[0][1]= 20
a[1][0]=30 a[1][1]= 40
a[2][0]=50 a[2][1]= 60
2차원 배열의 전체의 크기는 세로줄인 column의 개수입니다. 그래서 아래 예제를 보면 3이라는 결과가 나옵니다.
public class Nlength {
public static void main(String[] args) {
int[][] a= {
{10,20,30,40,50},
{60,70,80,90},
{100}
};
System.out.println("전체 배열의 크기" + a.length);
System.out.println("a[0]의 요소수" + a[0].length);
System.out.println("a[1]의 요소수" + a[1].length);
System.out.println("a[2]의 요소수" + a[2].length);
}
}
결과:
전체 배열의 크기3
a[0]의 요소수5
a[1]의 요소수4
a[2]의 요소수1
JAVA에서는 Arraylist 클래스가 지원이 되는데 이에 대한 배열을 적용하는 for문이 for-eachr 구문으로 변형을 해서 프로그래밍을 할 수 있습니다.
https://tsyoon.tistory.com/83?category=1032234
For each
자바 언어에서 ArrayList 가 나오면서 나온 문법이 For each 구문입니다. for문이 for(초기값; 종료 범위; 증감 연산) 이렇게 정의해서 사용하는데 for each 구문은 for( 요소 값: 배열 값) 이런 구조로 사용
tsyoon.tistory.com
'프로그래밍 언어론 > JAVA 기초' 카테고리의 다른 글
메소드 오버로딩 (7) | 2022.11.05 |
---|---|
생성자 (constructor) (8) | 2022.10.30 |
return에 대하여 이해하기 (0) | 2022.09.10 |
자리배치 프로그램 -JAVA (0) | 2022.09.04 |
제어문 (5) | 2022.09.04 |