요약 |
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]); |
} |