본문 바로가기

언어 기초/JAVA

참조형 [JAVA | 학습을 위한 자료와 스크립트 | 김영한 자바 기본]

 



가비지 컬렉터 GC

 

 

 

public class ProductOrderMain2 {
     public static void main(String[] args) {
// 여러 상품의 주문 정보를 담는 배열 생성
// createOrder()를 여러번 사용해서 상품 주문 정보들을 생성하고 배열에 저장 
// printOrders()를 사용해서 상품 주문 정보 출력
// getTotalAmount()를 사용해서 총 결제 금액 계산
// 총 결제 금액 출력
} }

 

public class RefactoringA {

    public static void main(String[] args) {
        ProductOrder[] orders = new ProductOrder[3];

        orders[0] = createOrder("두부" , 3000, 2);
        orders[1] = createOrder("김치" , 8000, 1);
        orders[2]= createOrder("콜라" , 1000, 3);

        printOrders(orders);
        int totalAmount = getTotalAmount(orders);
        System.out.println("총 결제 금액:" + totalAmount);
    }

    static ProductOrder createOrder(String productName, int price, int quantity) {
        ProductOrder order = new ProductOrder();
        order.productName = productName;
        order.price = price;
        order.quantity = quantity;
        return order;
    }

    static void printOrders(ProductOrder[] orders) {
        for (ProductOrder o : orders) {
            System.out.println("상품명: " + o.productName + ", 가격: " + o.price + ", 수량: " + o.quantity);
        }
    }

    static int getTotalAmount(ProductOrder[] orders){
        int totalAmount = 0;
        for (ProductOrder o : orders) {
            totalAmount += o.price* o.quantity;
        }
        return totalAmount;
    }
}

 

스크립트

참조형 변수를 이해할 때 중요한 점은 참조값을 통해 객체나 배열의 원본 데이터를 변경할 수 있다는 것이다. 이를 통해 메소드에 객체나 배열을 전달할 때 원본 데이터를 효과적으로 수정하고 조작할 수 있다.

 

배열은 참조형이다.

즉, 배열 변수는 배열 데이터를 직접 저장하는 것이 아니라 배열 데이터가 저장된 메모리 주소를 참조한다.

배열을 매개변수로 전달할 때 배열의 복사본이 아닌 원래 배열의 참조가 전달된다는 뜻이다.

따라서 메소드 내에서 배열의 내용을 변경하면 원래 배열에도 영향을 미친다.

 

배열의 크기는 배열이 생성될 때 결정되며, 한 번 생성된 배열의 크기는 변경할 수 없다.

배열을 매개변수로 전달할 때 배열의 크기를 함께 전달하거나, 배열의 크기를 직접 계산할 수 있다.

 

 

스크립트

배열의 크기는 한번 정해지면 변경할 수 없기 때문에 입력을 받아 동적할당을 해준다.

배열의 개수를 입력받아서 주문을 저장할수 있는 공간을 만들어준다.

null인 배열에 접근하면 NullPointerException이 발생할 수 있다.