## 코드
```
public class Time1Test
{
public static void main( String[] args )
{
Time1 time = new Time1();
System.out.print( "The initial universal time is: ");
System.out.println( time.toUniversalString() );
System.out.print("The initial standard time is: ");
System.out.println(time.toString() );
System.out.println();
time.setTime( 13, 27, 6 );
System.out.print( "Universal time after setTime is: ");
System.out.println( time.toUniversalString() );
System.out.print( "Standard time after setTime is: ");
System.out.println( time.toString() );
System.out.println();
time.setTime( 99, 99, 99);
System.out.print( "After attempting invalid settings: ");
System.out.print( "Universal time: ");
System.out.println( time.toUniversalString() );
System.out.print( "Standard time: ");
System.out.println( time.toString() );
System.out.println();
}
}
```
## 질문 1
이 코드에서 궁금한게 생성자를 사용하기 위해서는 레퍼런스 변수명을 설정을 해줘야 하기때문에 Time1 레퍼런스변수명 = new Time1();을 먼저 코드에 작성을 해야 하는건가요??
## 질문 2
두번째로 궁금한 게 객체 값 초기화는 생성자를 통한 초기화와 메쏘드를 이용한 두가지 방법이 있는걸로 아는데 밑의 코드에서는 객체 값 초기화를 메쏘드를 이용한 초기화 time.setTime( x, y, z); 를 이용한 것인가요? 그렇다면 메쏘드로 초기화한 부분에 생성자초기화 방법을 사용하여 Time1 time = new time1( x, y, z )라고 적어도 상관없는건가요?
sehongpark님의 답변
## 레퍼런스 변수 사용 이유
Time1 레퍼런스변수명 = new Time1();을 먼저 코드에 작성을 해야 하는건가요?? `true`
객체를 만들고 사용하기 위해서는 레퍼런스 변수가 필요합니다.
```
Time1 time = new Time1();
```
레퍼런스 변수로 해당 객체에 접근 할 수 있게 되었기 때문에 아래처럼 메쏘드를 통한 초기화가 가능합니다.
```
time.setTime(13, 27, 6);
```
## 생성자를 통한 초기화
객체 값 초기화를 메쏘드를 이용한 초기화 time.setTime( x, y, z); 를 이용한 것인가요? some `true`
초기화란 처음 값을 설정하는 것입니다. 초기화 이후에 값을 바꾸는 것은 갱신입니다. (초기화와 갱신은 다릅니다.)
그렇다면 메쏘드로 초기화한 부분에 생성자초기화 방법을 사용하여 Time1 time = new time1( x, y, z )라고 적어도 상관없는건가요? `false`
먼저 time 이라는 레퍼런스 변수가 중복되기 때문에 사용할 수 없을 뿐더러, 생성자를 통한 초기화는 새로운 객체를 만드는 것입니다. 따라서 기존의 객체 값은 변경되지 않습니다.