※기본형 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



참조형과 메서드 호출 - 활용1
질문 initStudent(Student student,… 이부분. 생성자는 없는데..?
package ref;
public class Student {
String name;
int age;
int grade;
}