※기본형 vs 참조형

기본형(Primitive Type): int aouble,boolean… 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다. 참조형(Reference Type):Student student1, int[] students 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다.

-참조형은 객체 또는 배열에 사용된다

-참조형은 변수에 객체의 위치인 참조값이 들어있다. 참조값은 계산에 사용할 수 없다.

-물론 다음과 같이 . 을 통해 객체의 기본형 멤버 변수에 접근한 경우에는 연산을 할 수 있다.

Student s1 = new Student();
 s1.grade = 100;
 Student s2 = new Student();
 s2.grade = 90;
 int sum = s1.grade + s2.grade; //연산 가능

※변수 대입

대원칙: 자바는 항상 변수의 값을 복사해서 대입한다.

※메서드 호출

대원칙: 자바는 항상 변수의 값을 복사해서 대입한다.

<기본형과 메서드 호출>

package ref;
 public class MethodChange1 {
 public static void main(String[] args) {
 int a = 10;
 System.out.println("메서드 호출 전: a = " + a);
 changePrimitive(a);
 System.out.println("메서드 호출 후: a = " + a);
    }
 static void changePrimitive(int x) {
        x 
= 20;
    }
 }
 
 
<실행 결과>

메서드 호출 전: a = 10
메서드 호출 후: a = 10

<참조형과 메서드 호출>

 package ref;
 public class MethodChange2 {
 public static void main(String[] args) {
 Data dataA = new Data();
        dataA.value = 10;
 System.out.println("메서드 호출 전: dataA.value = " + dataA.value);
 changeReference(dataA);
 System.out.println("메서드 호출 후: dataA.value = " + dataA.value);
    }
 }
 
 static void changeReference(Data dataX) {
        dataX.value = 20;
    }
    
    
<실행결과>

메서드 호출 전: dataA.value = 10
메서드 호출 후: dataA.value = 20

Untitled

Untitled

Untitled

참조형과 메서드 호출 - 활용1

질문 initStudent(Student student,… 이부분. 생성자는 없는데..?

package ref;
 public class Student {
 String name;
 int age;
 int grade;
 }