Java 공부 15

부분문자열을 얻어올 때 사용하는 substring()

substring(int index) 특정 위치부터 끝까지의 부분문자열을 리턴한다. String str = "일이삼사오"; System.out.print(str.substring(2)); 위와 같은 코드를 실행하면 화면에는 "삼사오"가 출력된다. substring(int start, int end) 부분문자열의 시작위치와 끝 위치를 모두 지정할 수 있다. start 위치의 문자부터 end-1 위치의 문자까지를 리턴한다. end까지가 아닌 end-1까지라는 점에 주의하자. String str = "일이삼사오"; System.out.print(str.substring(1,4)); 위와 같은 코드를 실행하면 화면에는 "이삼사"가 출력된다. StringIndexOutOfBounds 예외를 관리할 때에도 1의 차..

개행문자

줄바꿈을 나타내는 문자를 개행문자라 한다. 개행문자에는 두 가지가 있다. \n 커서를 한 칸 아래로 이동하여 새로운 라인을 추가한다. \r 커서를 맨 왼쪽으로 이동한다. 그런데 운영체제마다 개행문자가 다르다. 윈도우: \n\r MAC: \r UNIX: \n 이로 인한 문제를 예방하기 위해 코드에 개행문자 자체를 적는 대신, 코드가 실행되는 환경의 운영체제에 맞는 개행문자를 알아서 취하도록 할 수 있다. 다음과 같이 쓰면 된다. System.getProperty("line.separator"); //혹은 System.lineSeparator(); StringBuilder에서 사용하는 예시는 다음과 같다. StringBuilder sb = new StringBuilder(); sb.append("abc");..

중복값을 없앨 때에 유용한 HashSet, HashMap

HashSet은 Set 인터페이스의 구현 클래스이다. HashMap은 Map 인터페이스의 구현 클래스이다. 즉, HashSet은 일반적인 요소를 저장하고, HashMap은 키와 값을 한 쌍으로 묶어 저장한다. HashSet은 중복되는 요소를 허용하지 않는다. HashMap은 중복되는 키를 허용하지 않는다. 값은 중복되어도 괜찮다. 이 두 자료구조는 이름에서 알 수 있듯이 해싱(Hashing)기법으로 데이터를 관리한다. 따라서 다음의 특징을 가진다. 데이터를 탐색할 때 성능이 뛰어나다. 각 데이터의 저장 위치가 저장 순서와 관련이 없다. (데이터가 연속적으로 저장되는 배열과 다르다) 쓰임새 1. HashSet 특정 데이터 집합 중 어떠한 값이 존재하는지 여부를 판단할 때 쓰기 좋다. 2. HashMap 특..

Arrays.sort() 사용시 주의할 점

Arrays.sort() 를 이용해 정수 배열을 역순으로 정리하려고 시도하였다. int[] temp = B; Arrays.sort(temp, Collections.reverseOrder()); B는 temp와 같은 타입의 배열이다. 그런데 다음과 같은 오류가 뜨고 실행이 안 되었다. The method sort(int[]) in the type Arrays is not applicable for the arguments (int[], Collections.reverseOrder()) 구글에 검색해보았을 땐 분명 이렇게 쓰면 된다고 했는데... 뭐가 문제지 싶어서 Java api 문서에서 Arrays.sort()를 살펴보았다. public static void sort(int a[], Comparator)..

버퍼드리더 BufferedReader

지금까지는 입출력을 Scanner와 System.out.print로만 처리하였는데, 어제 동아리 활동 중에 팀원들이 버퍼드리더를 쓰는 것을 보았다. 많은 양의 입출력을 빠르게 처리하는 데 좋다고 한다. 버퍼드라이터도 있으나 일단 버퍼드리더부터 써보려고 한다. 당장 이번 주 과제에 사용해야겠다. 설명 Scanner: 공백과 Enter를 모두 데이터를 구분하는 경계로 인식한다. int, char, String 등 여러 형식으로 데이터를 받아올 수 있다. BufferedReader: Enter만을 경계로 인식한다. 받아오는 데이터의 형식이 일반적으로 String으로 고정된다. 많은 양의 데이터를 받아올 때 효율이 좋고 작업이 단순하다. 그러나 받아온 후 데이터를 쓰기 좋게 가공하는 단계가 필요하다. readL..