2018-3-26 TIL 인스턴스에 대해서 든 생각들...
java의 인스턴스 생성과 scanner.next()에 관한 생각들
- 자바에서 프로그램을 구현할때, 키보드를 통해서 입력을 받는 scanner.next()에 대해서 어려움이 있었다.
public static String bonusNum() {
Scanner scanner = new Scanner(System.in);
return scanner.nextLine();
}
- 위와 같이 지금은 클래스안에 메소드를 만들어서 프로그램을 구현을 하지만 이전에는 프로그램을 실행시킬때, scanner를 통해 입력을 받는것이 한번이 아니라 여러번이 입력을 받아서 많은 애를 먹었었다. 그부분에 대해서 생각을 해보려고 한다.
public class Input {
Scanner scanner = new scanner(System.in);
String rightNum = scanner.nextLine();
public static String bonusNum() {
return scanner.nextLine();
}
}
- 이전에는 위와 같은 코드로 스캐너를 구현을 했었다. 그러다보면 2번씩 입력을 받아서 그 원인에 대해서 잘 몰랐다. 예를 들면 로또 구현을 하기위해서는 당첨번호(rightNum)과 보너스번호(bonusNum)에 대해서 키보드를 통한 입력을 2번을 호출을 해야된다.
- 처음에는 Input에 대한 인스턴스를 생성을 해서, Input input = new Input()을 호출을 하게 된다. 그러면 위에 코드에서 String rightNum에서 scanner가 호출이 되고, input.rightNum에서 호출이 되기때문에 scanner를 두번을 입력받게 된다. 그래서 많이 헷갈렷던 부분이다. 이 부분에 대해서는 메소드를 통해서 호출을 해서 한번만 호출을 하면 되는데, 인스턴스가 생성이 될때, rightNum도 같이 생성이 된다는 사실을 몰랐다.
- 여러번 호출이 되서 늘 Main메서드에서 다이렉트로 scanner.next()를 호출을 했었는데, 이제는 이런부분에 대해서 실수를 안해서 안심이 된다.
오늘의 느낀점
- 인스턴스변수에 대해서 다시 생각을 하게된다. 사실은 아직도 인스턴스에 대해서 설명을 하라고하면 똑부러지게 설명을 못하겠다. 프로그램을 설계를 하고 구현을 하면서 인스턴스가 언제 생성이 되고 리턴이 되는지에 대해서 알게모르게 생각을 하게된다. 계속 동작을 시키다보면서 언제 생성이 되고 리턴이 되는지에 대해서도 조금씩은 느끼게 된다. 위와 같이 scanner에 대한 부분역시 끊임없이 로또를 구현하면서 수많은 시행착오를 겪고나서 느낀점이다. 다시 자바의정석 6장을 공부를 해봐야곘다.
Written on March 26, 2018