int num; //int형 변수 👉🏻 정수값 1개 저장
int[] arr1D; //int형 배열 👉🏻 (정수값) 여러 개 저장
int[][] arr2D; //(int형 배열)의 배열 👉🏻 ((정수값) 여러 개)를 여러 개
int[][] arr;
arr = new int[2][3];
arr[1][2] = 555;
System.out.println(arr[1][2]);
➡ 555
int[] arr1D = { 1, 2, 3, 4, 5 };
int[][] arr2D = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}
👉🏻 3행 3열의 2차원 배열 생성 / 3x3 배열
<2차원 배열의 요소 모두 출력하기>
for(int i=0; i<arr2D.length; i++) { //int[]의 수
for(int j=0; j<arr2D[i].length; j++) { //int[] 안에 있는 int공간의 수
System.out.print( arr2D[i][j] + " ");
}
System.out.println();
}
int[][] arr2D = new int[3][3]; 👉🏻 3행 3열의 2차원 배열 arr2D 선언 및 초기화
arr2D = new int[5][4]; 👉🏻 arr2D에 5행 4열의 새로운 2차원 배열 생성

int[][] arr = new int[3][]; ➡ 참조변수 기본값 null로 초기화
👉🏻 (int[]) * 3묶음 //뒤에서부터 읽기
arr[0] = new int[8];
arr[1] = new int[3];
arr[2] = new int[2];
👉🏻 각 arr[]마다 다른 크기의 int[] 공간을 가질 수 있음
System.out.println( arr ); ➡ 2차원 배열의 주소 출력
System.out.println( arr.length ); ➡ 3
System.out.println( arr[0] ); ➡ int[]의 주소 출력
System.out.println( arr[0].length ); ➡ 8
System.out.println( arr[1] );➡ int[]의 주소 출력
System.out.println( arr[1].length ); ➡ 3
System.out.println( arr[2] );➡ int[]의 주소 출력
System.out.println( arr[2].length ); ➡ 2

명령어(코드)들의 나열로 프로그램이 작동되도록 작성하는 기법
명령어들을 하나의 집합(모음) 단위인 객체로 묶어 프로그래밍 하는 기법
객체, Object
클래스, Class
추상화하여 작성추상화, Abctraction
선언정의public class Class_01 { //기능 클래스
int num;
String data;
public void display() {
System.out.println("display() 메소드 사용(호출, call)");
}
}
public class Main_01 { //실행 클래스
public static void main(String[] args) {
Class_01 c01; 👉🏻 Class_01타입 객체변수 c01 선언
c01 = new Class_01(); 👉🏻 Class_01 타입의 인스턴스를 생성, 참조값을 c01에 대입
System.out.println(c01);
➡ java06_class.Class_01@5ccd43c2 //객체변수를 출력하면 참조값(래퍼런스, Refernce)이 출력됨
//----------------------------------------------------------------
<멤버필드에 대입>
c01.num = 123;
c01.data = "Apple";
<클래스의 멤버 메소드 호출>
c01.display();
//----------------------------------------------------------------
Class_01 c02 = new Class_01(); //인스턴스 생성 및 초기화
Class_01 c03 = new Class_01(); //인스턴스 생성 및 초기화
Class_01 c04 = null;
c02.num = 200;
c03.num = 300;
c04.num = 500 //->Null Pointer Exception
// null을 참조하고 있는 객체변수를 이용하여 참조연산자를 사용하면 '참조할 것이 없다'는 오류 발생
// 예외가 발생한 Line의 .(참조연산자)의 왼쪽에 있는 코드가 null값을 갖고 있을 것

클래스(class) 코드를 통해 생성된 실체 (실제 메모리 공간)
객체인스턴스를 만드는 작업 👉🏻 메모리에 실체를 만드는 작업
객체의 멤버필드(고유한 속성), 멤버 메소드(고유한 기능)에 대한 정보나 기능을 객체의 외부에서 함부로 접근할 수 없게 제한
멤버필드, 멤버메소드에 적용하며, 종류에 따라 공개범위가 단계적으로 달라짐
private
default
protected
public
public class Class_02 {
private int num1 = 100; // 설계도에서는 값을 대입할 수 없음
👉🏻 일종의 예약. 나중에 인스턴스가 만들어질 때 별일 없으면 100을 대입하겠음
int num2 = 200;
protected int num3 = 300;
public int num4 = 400;
}
public class Main_02 {
public static void main(String[] args) {
Class_02 cl = new Class_02();
System.out.println(cl.num4); //public
System.out.println(cl.num3); //pritected
System.out.println(cl.num2); //default
System.out.println(cl.num1); //private
//공개범위가 맞지 않는 멤버를 사용한 경우 "is not visible" 에러
//private를 외부인 Main 클래스에서 보려해서 생긴 오류