TIL

day8 TIL

dalooong 2023. 7. 7. 00:48

23-04-26

참조타입의 배열 선언

클래스란 ? = Object

클래스= 객체 = 타입 = 참조타입

클래스 라고 선언하는 것들은 자바에서 타입이될수 있다. 다만, 모든 타입은 클래스가 아니다.

// 원시타입(int, float, double) Primitive Type은 클래스가 아니다

//참조타입만 클래스에 해당한다.

  • 여러타입의 배열 선언
int[] iArr; // 원시 타입 int 타입 배열 선언
float[] fArr; // 원시 타입 float 타입 배열 선언
double[] dArr; // 원시 타입 double 타입 배열 선언
char[] cArr; // 원시 타입 char 타입 배열 선언
String[] sArr; // 참조 타입 String 타입 배열 선언
Scanner[] scArr; // 참조 타입 Scanner 타입 배열 선언
PrintHello[] phArr; // 참조 타입 PrintHello 타입 배열 선언
int[][] iArrArr; // 참조 타입 int[] 타입 배열 선언

//에러 → 다시 작성해보기

package week2.day8;

public class ReferenceTypeArray {
    public static void main(String[] args) {
        Student[] students = new Student[2]; //.배열의 초기화
        students[0] = new Student(); //Student 클래스의 초기화
        students[0].name = "김경록";
        students[0].phoneNumber = "010-1111-2222";
        students[0].age = "37";
        students[1].name = "김지유";
        students[1].phoneNumber = "010-2222-3333";
        students[1].age = "20";

        class Student {
            String name;
            String phoneNumber;
            int age;
        }
    }
}

2차원 배열

: 행과 열로 이루어진 테이블

  • 2차원 배열을 선언하는 방법

: 배열의 배열

타입 뒤에 → [ ][ ]대괄호를 두개 붙이면(int[ ][ ]) 2차원 배열이 된다. 3차원(int[ ][ ][ ]), 4차원(int[ ][ ][ ][ ]) 배열

2차원 배열 선언 방법: 타입[][] 변수명 = new 타입[개수1][개수2];

3*3 형태의 2차원 배열 : int[][] arr = new int[3][3];

결과)

예제)

System.out.println(Arrays.toString(arr[0]));
System.out.println(Arrays.toString(arr[1]));
System.out.println(Arrays.toString(arr[2]));
//출력
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]

예제) 10*10 2차원 배열

import java.util.Arrays;
public class TenxTen {
public static void main(String[] args) {
int[][] arr10x10 = new int[10][10]; // 배열 선언과 초기화
System.out.println(Arrays.toString(arr10x10[0]));
System.out.println(Arrays.toString(arr10x10[1]));
System.out.println(Arrays.toString(arr10x10[2]));
System.out.println(Arrays.toString(arr10x10[3]));
System.out.println(Arrays.toString(arr10x10[4]));
System.out.println(Arrays.toString(arr10x10[5]));
System.out.println(Arrays.toString(arr10x10[6]));
System.out.println(Arrays.toString(arr10x10[7]));
System.out.println(Arrays.toString(arr10x10[8]));
System.out.println(Arrays.toString(arr10x10[9]));
}
	}
// 실행 결과
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

예제) 10*10 크기의 int 타입의 2차원 배열 선언, 반복문 이용 (위에랑 같은 결과가 출력되지만 반복문을 이용함)

import java.util.Arrays;
public class TenxTenFor {
public static void main(String[] args) {
int[][] arr10x10 = new int[10][10];
for (int i = 0; i < 10; i++) {
System.out.println(Arrays.toString(arr10x10[i]));
}
	}
//실행결과
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

예제) 2차원 배열의 보기 좋은 형태 나열하기

import java.util.Arrays;

public class ArrayDefineAndAssign {
    public static void main(String[] args) {
        int[][] arr2 = {
                {10, 20, 30},
                {40, 50, 60},
                {70, 80, 90}
        };
        System.out.println(Arrays.toString(arr2[0]));
        System.out.println(Arrays.toString(arr2[1]));
        System.out.println(Arrays.toString(arr2[2]));
    }
}
//실행결과
[10, 20, 30]
[40, 50, 60]
[70, 80, 90]

예제 ) 2차원 배열 값에 접근하기 }int[] arr = new int[3]; arr[0] = 1; System.out.println(arr[0]); 앞에서

int[] arr = new int[3];
arr[0] = 1;
System.out.println(arr[0]);
// 1출력

int[][] arr = new int[3][3];

 

예제) 2차원 배열 arr을 선언, 첫번째 0번 인덱스에 있는 첫번째 행을 선택해 1차원 배열 타입 변수에 넣은 후 첫번째 칸에 1을 할당한 후 출력

public class TwoDimArray {
public static void main(String[] args) {
int[][] arr = new int[3][3]; // 2차원 배열 선언
int[] arr0 = arr[0]; // 2차원 배열에서 배열을 꺼내 1차원 배열이 됨
arr0[0] = 1; // 1차원 배열인 arr0에서 첫번째 칸에 값을 할당
System.out.println(Arrays.toString(arr[0]));
System.out.println(Arrays.toString(arr[1]));
System.out.println(Arrays.toString(arr[2]));

연산자

  • 연산자와 피연산자

연산: 수나 식을 정해 놓은 연산자의 규칙에 따라 계산하는 것이다. ( +, - ),

피연산자: 연산 수식 앞뒤로 있는 수를 피연산자라고 한다. 변수도 피연산자가 되어 연산을 할 수 있다.

연산자의 종류 

(1) 산술 연산자(arithmetic operator) +, -, *, /, % 등이 있으며, 숫자형 데이터 타입에서 사용됩니다.

(2) 대입 연산자(assignment operator) =, +=, -=, *=, /= 등이 있으며, 변수에 값을 할당합니다.

(3) 증감 연산자(Increment/Decrement Operators) ++x, x++, --x, x-- 가 있습니다.

(4) 비교 연산자(comparison operator) <, >, <=, >=, ==, != 등이 있으며, 두 개의 값을 비교하여 결과를 논리값(boolean)으로 반환합니다.

(5) 논리 연산자(logical operator) &&, ||, ! 등이 있으며, 논리적인 연산을 수행하고 결과를 논리값(boolean)으로 반환합니다. 

(6) 삼항 연산자(ternary operator) 조건식 ? 표현식1 : 표현식2 형태로 사용됩니다. 조건식이 참이면 표현식1을, 거짓이면 표현식2를 반환합니다.