//1차원 배열
int[] num1 = new int [5];
//1차원배열 초기화
num1[0] = 10;
num1[1] = 20;
num1[2] = 30;
num1[3] = 40;
num1[4] = 50;
num1[5] = 60;
//2차원 배열
int[][] num2 = new int [3][4]; //3층 4칸 > 12개방
//2차원배열 초기화
num2[0][0] = 10;
num2[0][1] = 20;
num2[0][2] = 30;
num2[0][3] = 40;
num2[1][0] = 50;
num2[1][1] = 60;
num2[1][2] = 70;
num2[1][3] = 80;
num2[2][0] = 90;
num2[2][1] = 100;
num2[2][2] = 110;
num2[2][3] = 120;
//3차원 배열
int[][][] num3 = new int [2][3][4]; //2개동 3층 4칸 > 24개방
//3차원배열 초기화
num3[0][0][0] = 10;
num3[0][0][1] = 20;
num3[0][0][2] = 30;
num3[0][0][3] = 40;
num3[0][1][0] = 50;
num3[0][1][1] = 60;
num3[0][1][2] = 70;
num3[0][1][3] = 80;
num3[0][2][0] = 90;
num3[0][2][1] = 100;
num3[0][2][2] = 110;
num3[0][2][3] = 120;
num3[1][0][0] = 510;
num3[1][0][1] = 520;
num3[1][0][2] = 530;
num3[1][0][3] = 540;
num3[1][1][0] = 550;
num3[1][1][1] = 560;
num3[1][1][2] = 570;
num3[1][1][3] = 580;
num3[1][2][0] = 590;
num3[1][2][1] = 5100;
num3[1][2][2] = 5110;
num3[1][2][3] = 5120;
for(int i=0; i<num1.length; i++) {
System.out.printf("%5d",num1[i]);
}
System.out.println();
for(int i=0; i<num2.length; i++) {
for(int j=0; j<num2[0].length; j++) {
//System.out.printf("i: %d, j: %d",i,j);
System.out.printf("%5d",num2[i][j]);
}
System.out.println();
}
System.out.println();
for(int i=0; i<num3.length; i++) {
for(int j=0; j<num3[0].length; j++) {
for(int k=0; k<num3[0][0].length; k++) {
System.out.printf("%5d",num3[i][j][k]);
}
System.out.println();
}
System.out.println();
}
System.out.println();
//int[][] num2 = new int [3][4]; //3층 4칸 > 12개방
System.out.println(num2.length); //3 -> 층
System.out.println(num2[0].length); //4 -> 방 => [0]으로 써주는 방법을 사용
//System.out.println(num2[1].length); //4 -> 방
//System.out.println(num2[2].length); //4 -> 방
int[] num1 = new int[] { 10, 20, 30, 40, 50 };
//A.
int[][] num2 = new int[][] {{ 10, 20, 30 },{ 40, 50, 60 }};
//B.
int[][] num2_1 = new int[][] {
{ 10, 20, 30 },
{ 40, 50, 60 }
};
//A.
int[][][] num3 = new int[][][] {{{ 10, 20, 30, 40 }, { 10, 20, 30, 40 }, { 10, 20, 30, 40 }}, {{ 10, 20, 30, 40 }, { 10, 20, 30, 40 }, { 10, 20, 30, 40 }}};
//B.
int[][][] num3_1 = new int[][][] {
{
{ 10, 20, 30, 40 },
{ 10, 20, 30, 40 },
{ 10, 20, 30, 40 }
},
{
{ 10, 20, 30, 40 },
{ 10, 20, 30, 40 },
{ 10, 20, 30, 40 }
}
};
private static void m3() {
// 5x5 배열
int[][] num = new int[5][5];
int n = 1;
//입력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
num[i][j] = n; //가로로 증가
n++;
//System.out.printf("i : %d, j:%d\n", i, j);
}
}
output(num);
}
private static void output(int[][] num) {
// 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.printf("%3d", num[i][j]);
}
System.out.println();
}
System.out.println();
}
private static void m3() {
// 5x5 배열
int[][] num = new int[5][5];
int n = 1;
//입력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
num[j][i] = n; //세로로 증가
n++;
//System.out.printf("i : %d, j:%d\n", i, j);
}
}
output(num);
}
private static void output(int[][] num) {
// 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.printf("%3d", num[i][j]);
}
System.out.println();
}
System.out.println();
}
private static void m3() {
// 5x5 배열
int[][] num = new int[5][5];
int n = 1;
//입력
for(int i=0; i<5; i++) {
for(int j=0; j<=i; j++) {
num[i][j] = n; //가로로 증가
n++;
//System.out.printf("i : %d, j:%d\n", i, j);
}
}
output(num);
}
private static void output(int[][] num) {
// 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.printf("%3d", num[i][j]);
}
System.out.println();
}
System.out.println();
}
- 절차지향 프로그래밍
- C
- 객체지향 프로그래밍
- C++, Java, C# 등등...
- 함수형 프로그래밍
- F#, Kotlinm, Java(일부 기술)
클래스
코드의 집합
클래스 사용 이유
//프로그램 실행 : 프로젝트 내의 모든 클래스 정의 읽기(인식 단계, Class Loading) -> main() 메소드 실행
public class Ex29_Class {
//main : 프로그램의 시작점!!
public static void main(String[] args) {
}//Ex29_Class
}//main
class Point { //클래스 헤더 : 식별자 + 규칙 정의
//클래스 바디 -> 구현부
//클래스 멤버(멤버 변수, 멤버 메소드)를 구현한다.(★★★★★★★)
//멤버 변수
int a;
//멤버 메소드
public static void test() {
}
}//Point
//객체 생성하기
//클래스명 클래스변수명 = new 클래스명();
//자료형 변수명 = 객체생성자 생성자;
Point p1 = new Point();
String s1 = "홍길동";
int[] n1 = new int[2];
//참조형 > 클래스
//Point -> 클래스
//String -> 클래스
//int[] -> 클래스
//자료형
// - 데이터의 형식+길이를 정의해놓은 규칙
//Point(클래스)를 자료형이라고 부르는 이유?
//1. 변수를 만들었으니까
// - 변수 앞에는 자료형이 온다 > 변수가 그 형태의 데이터만 저장할 수 있기 때문
//2. Point라는 자료형을 형태로 만들어서 설계 > 데이터를 저장하는 공간에 규칙을 정의
//Point 클래스의 객체(인스턴스)를 생성했습니다.
//p1 = 집합(x,y)
//우리집
int x = 100;
int y = 200;
System.out.printf("우리집은 (%d, %d)에 위치합니다.", x, y);
//마트
int x2 = 300;
int y2 = 400;
System.out.printf("마트는 (%d, %d)에 위치합니다.", x2, y2);
//우리집
int[] a1 = new int[2];
a1[0] = 100; //x
a1[1] = 200; //y
System.out.printf("우리집은 (%d, %d)에 위치합니다.", a1[0], a1[1]);
//마트
int[] a2 = new int[2];
a2[0] = 300;
a2[1] = 400;
System.out.printf("마트는 (%d, %d)에 위치합니다.", a2[0], a2[1]);
//2차원 배열
int[][] alist = new int[2][2];
alist[0][0] = 100;
alist[0][1] = 200;
alist[1][0] = 300;
alist[1][1] = 400;
//2차원 배열안에 1차원 배열 대입★
int[][] alist2 = new int[2][2];
alist2[0] = a1;
alist2[1] = a2;
//마트의 y좌표값? > alist2[1][1] > 배열 어디에 저장되있는지 알기 어렵다.
1. int a = 10;
- a의 자료형? > int
2. int[] a = new int[3];
- a의 자료형? > int[]
- a[0]의 자료형? > int
3. int[][] a = new int[3][3];
- a의 자료형? > int[][]
- a[0]의 자료형? > int[]
- a[0][0]의 자료형? > int
public class Ex29_Class {
public static void main(String[] args) {
//우리집 좌표
Point p1 = new Point();
p1.x = 100;
p1.y = 200;
System.out.printf("우리집은 (%d, %d)에 위치합니다.", p1.x, p1.y);
//마트
Point p2 = new Point();
p2.x = 300;
p2.y = 400;
System.out.printf("마트는 (%d, %d)에 위치합니다.", p2.x, p2.y);
}//main
}
//설계도
class Point {
public int x;
public int y;
}
데이터를 집합(단위)화가 되어야한다면 배열 또는 클래스를 사용해야한다.
public class Ex29_Class {
public static void main(String[] args) {
//상황1] 지도의 좌표를 저장하고 싶다. -> 선택? -> 클래스
//상황2] 학생의 국어 점수를 저장하고 싶다. -> 선택? -> 배열
//상황3] 학생 정보를 저장하고 싶다.(학생 정보: 학생명, 키, 몸무게) -> 선택? -> 클래스
//배열 사용
int[] s1 = new int[3];
s1[0] = 170; //키
s1[1] = 70; //몸무게
//s1[2] = "홍길동"; //이름 -> 다른 자료형..사용 불가
String[] s2 = new String[3];
s2[0] = "170"; // 숫자로 사용 -> 형변환(Integer.parseInt())
s2[1] = "70";
s2[2] = "홍길동"; //몇번째 방에 뭐가 들어있는지 ?? > 의미만 모르는게 아니고;; 자료형 알수 없다;;;
//.연산자 : 멤버 접근 연산자( . 을 통해서 멤버에 접근한다.)
//s1.name
//객체 사용
Student s3 = new Student();
s3.name = "홍길동";
s3.height = 180;
s3.weight = 80;
System.out.println(s3.name);
System.out.println(s3.height);
System.out.println(s3.weight);
}//main
}
//학생 정보(학생명, 키, 몸무게) -> 클래스 설계
class Student {
//학생 정보를 구성하는 개별 데이터를 저장할 변수를 클래스 멤버로 선언한다.
public String name;
public int height;
public int weight;
}