package com.access.array;
/*
* 일반적으로 배열은 연속된 메모리 위치를 가진 비슷한 타입을 가진 요소의 집합(Collection)을 의미한다.
* 자바에서의 배열은 유사한 데이터타입의 요소를 가지고있는 객체라 얘기한다.
* 배열을 초기화할때 정해진 범위를 늘이거나 줄일 수 없다.
* 한마디로 한번 생성되면 고정된 크기를 가진다.
*
* 배열은 인덱스를 기초로 0번부터 시작한다. 물론 갯수를 셀 떄는 1번부터 시작한다.
*
* 배열의 이점:
* -코드의 간소화, 어떤 인덱스 위치에 있는 어떤 데이타든 접근이 가능하다.
*
* 배열의 단점:
* - 제한된 크기: 위에서도 언급했다싶이 한번 초기화할때 정해진 크기를 가지며 수정은 불가하다.
* 이 문제를 해결하기위해서 Collection FrameWork가 사용되었다.
*
* -1차원 배열, 다차원 배열으로 2가지 타입의 배열이있다.
*
* 1차원 배열의 구문은 이렇다.
* dataType[] arr; (or)
* dataType []arr; (or)
* dataType arr[];
*
* 초기화는 이렇게한다.
* arrayRefVar=new datatype[size];
*
*/
public class TestArray {
public static void main(String args[]) {
int a[] = new int[5];// 배열 선억식.
a[0] = 10;// 각 인덱스에 번호를 직접 지정하여 값을 넣을 수 있다.
a[1] = 20;
a[2] = 70;
a[3] = 40;
a[4] = 50;
// 그럼 이렇게 만든 배열을 출력해보자.
for (int i = 0; i < a.length; i++)// a.lenght는 배열의 길이를 나타낸다 (중요 많이사용함)
System.out.println(a[i]);
int[] b = { 1, 2, 3 };
int c[] = { 3, 2, 1 };
// 하지만 간편하게 이렇게 선언할수도있다.
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
System.out.println(c[i]);
}
}
}
//////////////////////////////////////////
package com.access.array;
public class TestArray2 {
static void min(int arr[]) {
// 파리미터로 int타입 배열을 가지고있고,무엇보다 static이다.
int min = arr[0];
// 다른값들과 비교할 값이 필요함으로
// 입력으로 들어올 배열의 0번째 인덱스를 int min값에 집어넣는다.
for (int i = 1; i < arr.length; i++)
if (min > arr[i])
// 만약 min이 arr[1]보다 크면 min을 대신하고 배열의 길이만큼 반복한다.
min = arr[i];// 최종적으로 비교되 제일 낮은값이 min에 저장되게된다.
System.out.println(min);
// 프린트로 찍는다!.
}
public static void main(String args[]) {
int a[] = { 33, 3, 4, 5 };
min(a);// 이 부분 때문에 static을 선언한거라고 볼 수 있는데
// static은 최상위 우위로 로딩되기때문에 메인에서도 접근할 수가 있다.
// int a 배열을 min메소드의 파라미터로 넣는다.
// 그럼 그 값을 5번 라인으로 넘긴다.
}
}
//////////////////////////////////////////
package com.access.array;
/* 다차원 배열.
* 매트릭스 형태로 컬럼과 로우로 구성된 배열을 일컫는다.
* 구문은 아래와 같이 사용하여 정의할 수 있다.
*
* dataType[][] arrayRefVar; (or)
dataType [][]arrayRefVar; (or)
dataType arrayRefVar[][]; (or)
dataType []arrayRefVar[];
*
* 3개의 로우와 3개의 컬럼을 가진 다차원 배열을 예로 만들어보자
*/
public class TestArray3 {
public static void main(String[] args) {
int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 },{10,11,12}};
for (int i = 0; i < 4; i++) { //칼럼의 갯수만큼 돌려주고,
for (int j = 0; j < 3; j++) { // 로우의 갯수만큼 돌려주
System.out.print(arr[i][j]+" ");
} //arr
System.out.println();
}
}
}
//////////////////////////////////////////
package com.access.array;
/*
* java array의 클래스 이름은 무엇인가요?
*
* 자바에서 배열은 객체입니다.
*
*/
public class TestArray4 {
public static void main(String args[]) {
int arr[] = { 4, 4, 5 };
// 배열을 하나 생성해주고,
Class c = arr.getClass();
// 클래스 타입 변수 c에 .getClass()메소드를 이용해서 리턴값인 클래스를 넣어주고,
String name = c.getName();
// c의 이름을 가져와 스트링 변수에 담아서 출력하면,
System.out.println(arr);
// 그냥 arr을 찍으면 저장된 주소값이 출력됩니다.
System.out.println(c);
System.out.println(name);
// int arr[]의 클래스이름을 알아낼수있답니다.
}
}
//////////////////////////////////////////
package com.access.array;
/*
* 배열복사하기.
* System class의 arraycopy 메소드를 이용해서, 배열을 복사할수있다.!
* arraycopy메소드의 구문은 아래와 같은데,
*
* public static void arraycopy(
Object src, int srcPos,Object dest, int destPos, int length
)
꼭 메소드를 통해서만 복사가 가능한걸까?
*/
public class TestArrayCopyDemo {
public static void main(String[] args) {
char[] copyForm = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'd' };
// 문자열 타입 배열을 만들고 안에 값을 집어넣느다.
char[] copyTo = new char[7];
// 그리고 복제가 될 배열 하나를 만든다.
System.arraycopy(copyForm, 2, copyTo, 0, 7);
// System의 메소드인 arraycopy를 타이핑 후 적절히 파라미터를 준다.
/*
* @param src 소스를 줄 배열
*
* @param srcPos 소스 배열에서 복제하기 시작할 인덱스 번호
*
* @param dest 소스를 받게 될 배
*
* @param destPos 몇번인덱스에서부터 소스를 받을 것인가.
*
* @param length destPos에서부터 얼마만큼 길이의 데이터를 받을 것인가.
*
*/
System.out.println(copyTo);
int[] a = { 1, 2, 3 };
int[] b = a;
char[] c = { 'a', 'b', 'c' };
char[] d = c;
for (int e = 0; e < a.length; e++) {
System.out.print(a[e]);
System.out.print(b[e]);
}
System.out.println();
for (int e = 0; e < a.length; e++) {
System.out.print(c[e]);
System.out.print(d[e]);
}
}
}
//////////////////////////////////////////
package com.access.array;
/*
* 다른 두 배열을 더할 수도 있을까?
* 복제를 보아하니, 왠지 가능할거같다.
*
*/
class TestArray5 {
public static void main(String args[]) {
// 일단 재료가 될 두 행렬을 생성해주자.
int a[][] = { { 1, 3, 4 }, { 3, 4, 5 } };
int b[][] = { { 1, 3, 4 }, { 3, 4, 5 } };
// 2, 6, 8 6, 8, 10이 되어야한다.
// 두 배열의 합을 저장할 배열을 만들어주자.
int c[][] = new int[2][3];
// 그리고는 반복문을 통해 두 배열을 c로 집어넣어주자.
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
c[i][j] = a[i][j] + b[i][j];
System.out.print(c[i][j] + " ");
}
System.out.println();// new line
// 딱히 설명할게 없다.
}
}
}
RECENT COMMENT