고급자바 **배움 정리

메인메소드에 


 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 을 정렬한다. 









 

댓글