메인메소드에
new BaseBallTest().gameStart(); 이렇게 아래두줄을 간단하게 한줄로 쓸 수 있다.
BaseBllTest baseBall = new BaseBallTest();
baseBall.gameStart();
String name = scan.next();
--> nextLine() 은 띄어쓰기도 포함 next() 는 띄어쓰기 안포함
*Scanner 의 입력 받는 메서드의 특징
입력하는 것이 임시기억장치에 ( 입출력 버퍼 ) 잠시 기록된다.
입력할때까지 기다리는 그 시간동안 cpu 가 쉬는 시간을 줄일 수 있게 만든것이 버퍼이다.
입력장치 , cpu 장치
cpu 는 버퍼한테만 명령을 내린다. 버퍼는 입력장치보다는 속도가 빠르고 cpu 보다는 느리다.
기억장치
버퍼는 다 입력한거 다 기억하고 자기가 꽉차면 -> cpu 한테 보낸다.
Scanner 도 버퍼를 내부에서 사용 : 버퍼를 먼저 사용 ->
버퍼에 데이터가 있는지 아닌지 먼저 검색을 한다.
1. next(), nextInt(), nextDouble().... 메소드들
==> 데이터를 사이띄기, Tap 키 , enter키 값을 구분한다.
가나다
마바사
or
가나다 마바사
or 가나다 마바사
변수1 =scan.next(); -> 가나다
변수2 =scan.next(); -> 마바사
next로 시작하는 대부분의 매소드들은 데이터 안에 사이띄기 tap 키 등을 무시한다. ( 버퍼에 남아있긴하지만)
2. nextLine(); ==> 한 줄 단위로 입력한다.
즉, 자료를 입력하고 Enter 키를 누르면 Enter키 값까지 읽어간다.
가나다
마바사는 데이터가 2개
가나다 마바사 는 데이터가 1개
가나다 마바사도 데이터가 1개
데이타 입력 + enter 키
--> 엔터키는 남아있고 ( 이거는 가져갈 수 있는 값이라고 생각하고 가지고 nextLine() 은
엔터키를 받은게 된다.
해결책 : System.out.println("전화번호 >> " ) ;
String tel = scan.next();
//입력버퍼 비우기
scan.nextLine(); 엔터키를 받았는데 사용안하고 버림
System.out.print("주소 >> " ) ;
String addr = scan.nextLine()';
혼용해서 쓸때 주의를 해야한다.
- 생성자가 필요한 이유
: 필드를 선언할 때 초기값을 주게 되면 동일한 클래스로부터 생성되는 객체들은 모두 같은 데이터를 갖게 된다. -> 객체 생성 시점부터 원하는 초기값을 설정하기 위해 생성자를 사용한다.
HashMap map = new HashMap<>();
-Map = new LinkedHashMap<>();
들어가는 순서대로 Map 을 정렬한다.
댓글
댓글 쓰기