하드웨어 - OS - 소프트웨어
하드웨어:눈에보이는부품(모니터,부품등)
OS
소프트웨어: 눈에보이지않는 프로그램
JVM(Java Virtual Machine) 자바의 메모리 구조
상수및메소드부
힙: 동적메모리 영역 (원래 변수 크기가 스택에 미리 정해져 있어야만 프로그램이 실행된다. ex)인원수를 입력받아 배열크기를 정할 수 없다. java에서 new라고 적혀있으면 힙에 할당한다. new=동적메모리할당연산자)
스택: 선언된 변수가 들어가는 곳
△레지스터: OS와 통신하는 소프트웨어!
int[][] arr4 = new int[2][2]; // [2개방][크기 2개씩]
/*
* 2차원 배열
*/
public class Exam_02 {
public static void main(String[] args) {
//int arr[] = new int[3];
int[][] arr1 = new int[2][3]; // [2개방][크기 3개씩]
int[] arr2[] = new int[2][2];
int arr3[][] = new int[2][2];
int[][] arr4 = new int[2][]; // [2개방][크기 각자 나중에 선언]
arr4[0] = new int[3]; // arr4의 (주소값)0번이 가리키는 배열 : 크기 3
arr4[1] = new int[4]; // arr4의 (주소값)1번이 가리키는 배열: 크기 4
System.out.println("arr4.length = " + arr4.length); // 2
System.out.println("arr4.length = " + arr4[0].length); // 3
System.out.println("arr4.length = " + arr4[1].length); // 4
}
}
public class Exam_03 {
public static void main(String[] args) {
int arr[][] = new int[5][5]; // length=5
int co = 1;
for(int i=0; i<5; ++i) {
for(int j=0; j<5; ++j) { // i=0, j=0,1,2,3,4, co=1,2,3,4,5 / i=1, j=0,1,2,3,4, co=6,7,8,9,10 ...
arr[i][j] = co;
++co;
}
}
/*
5 10 15 20 25
4 9 14 19 24
3 8 13 18 23
2 7 12 17 22
1 6 11 16 21
*/
for(int i=4; i>=0; --i) {
for(int j=0; j<=4; ++j) {
System.out.printf("%2d\t", arr[j][i]);
}
System.out.println();
}
// /*
// 25 24 23 22 21
// 20 19 18 17 16
// 15 14 13 12 11
// 10 9 8 7 6
// 5 4 3 2 1
// */
//
// for(int i=4; i>=0; --i) {
// for(int j=4; j>=0; --j) {
// System.out.printf("%2d\t", arr[i][j]);
//
// }
// System.out.println();
// }
// /*
// 21 16 11 6 1
// 22 17 12 7 2
// 23 18 13 8 3
// 24 19 14 9 4
// 25 20 15 10 5
// */
//
// for(int i=0; i<5; ++i) {
// for(int j=4; j>=0; --j) {
// System.out.printf("%2d\t", arr[j][i]);
//
// }
// System.out.println();
// }
// /*
// 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
// */
//
//
// for(int i=0; i<5; ++i) {
// for(int j=0; j<5; ++j) {
// System.out.printf("%2d\t", arr[i][j]);
// }
// System.out.println();
// }
}
}
/*
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
*/
public class Exam_04 {
public static void main(String[] args) { // 아래 for문에서 공통점을 찾아 단축하기
int arr[][] = new int[5][5];
int co = 0;
int k = 4;
for(int j=0; j<3; ++j){
for(int i=j; i<=k; ++i){arr[j][i] = ++co;}
for(int i=j+1; i<=k; ++i){arr[i][k] = ++co;}
for(int i=k-1; i>=j; --i){arr[k][i] = ++co;}
for(int i=k-1; i>=j+1; --i){arr[i][j] = ++co;}
k--;
}
for(int i=0; i<=4; ++i) {
for(int j=0; j<=4; ++j) {
System.out.printf("%2d\t", arr[i][j]);
}
System.out.println();
}
}
}
/*
for(int i=0; i<=4; ++i){arr[0][i] = ++co;} //1,2,3,4,5
for(int i=1; i<=4; ++i){arr[i][4] = ++co;} //6,7,8,9
for(int i=3; i>=0; --i){arr[4][i] = ++co;} //10,11,12,13
for(int i=3; i>=1; --i){arr[i][0] = ++co;} //14,15,16
for(int i=1; i<=3; ++i){arr[1][i] = ++co;} //17,18,19
for(int i=2; i<=3; ++i){arr[i][3] = ++co;} //20,21
for(int i=2; i>=1; --i){arr[3][i] = ++co;} //22,23
for(int i=2; i>=2; --i){arr[i][1] = ++co;} //24
for(int i=2; i<=2; ++i){arr[2][i] = ++co;} //25
for(int i=3; i<=2; ++i){arr[i][2] = ++co;}
for(int i=1; i>=2; --i){arr[2][i] = ++co;}
for(int i=1; i>=3; --i){arr[i][2] = ++co;}
*/