기본 자료형 이외의 자료형 타입.
참조 자료형은 생성자를 통해 생성하는데 없을경우 컴파일 시 자동으로 기본생성자를 만들어준다.
public class Test {
public Test() {}
public static void main(String[] args) {
Test test = new Test();
}
}
단, 다른 매개변수를 받는 생성자가 있다면 기본생성자를 자동으로 만들어주지 않으므로 따로 생성해야한다.
public class Test {
public Test() {}
public Test(String str) {}
public static void main(String[] args) {
Test test = new Test();
}
}
new키워드를 통해 초기화 한다.
Caculator caculator = new Calculator();
예외 케이스로 String 초기화 시에는 String test = “test”;와 같이 초기화 한다. String은 참조자료형 생성방법과 동일하게 String test = new String(”test”); 도 가능하지만 리터럴 방식을 사용한다.
또한 참조자료형이 사용할 수 있는 연산자로는 =뿐이지만 예외로 String은 + 연산을 사용할 수 있다.
this예약어는 매개변수와 객체필드명이 동일할때, 이 객체가 가진 필드라고 알려주는 예약어이다. 이는 컴파일러에게도 어떤 필드인지 정확하게 알려주는 역할을 한다.
public class Person {
private int seq;
private String name;
public Person(int seq, String name) {
this.seq = seq;
this.name = name;
}
}
System.out.println() : 매개변수가 다양한 타입을 print하는 동일한 역할을 다양한 매개변수 받는 메소드로 오버로딩 하였다.

public class ReferencePass {
public static void main(String[] args) {
ReferencePass referencePass = new ReferencePass();
referencePass.callPassByValue();
}
public void callPassByValue() {
int a = 10;
String b = "b";
System.out.println("before passByValue");
System.out.println("a = " + a);
System.out.println("b = " + b);
passByValue(a,b);
System.out.println("after passByValue");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
private void passByValue(int a, String b) {
a=20;
b="z";
System.out.println("in passByValue");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}before passByValue
a = 10
b = b
in passByValue
a = 20
b = z
after passByValue
a = 10
**b = b**b="z"; b= new String(”z”);와 동일하므로 다른 객체로 대체된것이다.생성자는 반드시 만들어야 하나요?
- 생성자가 반드시 없어도 되는 static메서드가 있다.
만약 매개변수가 있는 생성자를 만들고, 매개변수가 없는 기본 생성자를 호출하면 어떻게 될까요?
- 기본생성자를 만들어줘야한다.
생성자의 개수는 제한이 있나요?
- 없다.
인스턴스의 변수와 매개변수나 메소드 내에서 생성한 변수와 구분하기 위해서 사용하는 키워드는 무엇인가요?
- this
메소드 선언시 리턴 타입으로 지정한 데이터를 넘겨줄 때 사용하는 키워드는 무엇인가요?
- return
메소드 선언시 아무 데이터도 리턴 타입으로 넘겨주지 않겠다는 것을 지정하는 키워드는 무엇인가요?
- void
메소드 선언에 static 이 있는 것과 없는 것의 차이는 무엇인가요?
- static메서드는 객체를 꼭 생성하지 않아도 호출하여 사용할 수 있다.
필자가 엄청나게 중요하다고 한 것 중 메소드의 이름은 같으나 매개변수를 다르게 하는 것의 명칭은 무엇인가요?
- 메소드 오버로딩
기본 자료형을 매개변수로 넘겨 줄 때 Pass by value인가요? 아니면 Pass by reference인가요?
- Pass by value
참조 자료형을 매개변수로 넘겨 줄 때 Pass by value인가요? 아니면 Pass by reference인가요?
- Pass by reference
매개변수의 수가 가변적일 때 메소드 선언시 타입과 변수 이름 사이에 어떤 것을 적어줘야 하나요?
- ...을 적어줘야하며 띄어쓰기 하면 안된다.