본문 바로가기

Dev/Java

(5)
Java의 객체 정렬과 객체 우선순위 큐 난 C++를 사랑하는데... 기업들은 C++를 사랑하지 않는다..ㅠㅠ 그래서 코딩테스트를 준비해야하기 때문에 요즘 자바로 C++로 풀었던 것들을 다시 풀고있다. 그러다가 개인적으로 자바에서 가장 불편한 부분이 바로 정렬과 우선순위큐 였는데 이번 기회에 한번에 정리하고 가겠다. 예제는 강의실 배정 문제이다. 이 문제는 아주 베이직하게 정렬과 우선순위큐를 활용해야하는 문제이기 때문에 가져왔다. 예제31 33 42 3 -> 여기서 정렬했을 땐  1 33 42 3 순으로 나와야하고 세개가 모두 우선순위큐에 있다면 3 41 32 3 순서로 나와야한다. Comparator 와 Comparable 의 차이잠시 영어시간을 가져보면 전자는 비교자, 후자는 비교할수있는? 이런 뜻이다. 그러니까 전자는 실제 sort 함수에..
Java 기초 체력 기르기 자바 문자열 모두 대/소문자 만들기 = Str = Str.toUpperCase() Str = Str.toLowerCase() 문자열 -> 정수 String str = "120"; int tmp = Integer.parseInt(str); 정수 -> 문자열 int tmp = 120; String str = Integer.toString(tmp) ArrayList 삽입 : add ArrayList 삽입 add(3, 'a') 3번째에 a삽입 Collections.reverse -> 반전 Collections.sort(Array) -> 오름차순 Collections.sort(Array, Collections.reverse()) -> 내림차순 Collections.sort(Array, comp) -> 사용자 설정
Java - 입력: BufferedReader, StringTokenizer - BufferedReader : 문자열로 입력을 받게 되어있음. 받을 때 마다 적절한 형변환이 필요함. 그러나 스캐너보다 빠름 - InputStream : 자바에서 기본이 되는 입출력, Stream이란 출발지와 도착지를 이어주는 다리임 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 버퍼리더를 사용하면 위의 방식으로 사용하게 되는데 코드를 해석해보면 1. 텍스트를 읽어 메모리에 저장해둠 (BufferReader) 2. InputStreamReader(System.in) 에서 바이트 스트림을 문자 스트림으로 변환 이제 br을 통해 값을 입력받을 수 있음. 단, 이것을 사용하려면 예외처리 IOException e가 필요함 ..
Java - 문자열 자르기, 문자열 교체, 문자열 카피 1. 문자열 자르기 split : 문자열을 기준에 따라 자른다. 원본 문자열은 바뀌지 않는다. 새롭게 문자열 배열을 구성해야한다. String str = "Java is very hard,C++ is very hard"; String[] splitstr = str.split(","); for(String spl : splitstr) System.out.println(spl); subString : 문자열을 범위에 따라 자른다. 원본 문자열은 바뀌지 않는다. 즉 반환형이다. String substr = str.substring(0, 3); System.out.println(substr); 이 함수의 특징은 0~3부터가 아니라 0~2 까지이다. 2. 문자열 확인, 교체 contain : 포함하고있는가 확인...
Java - Primitive Type / Reference Type Primitive type은 우리가 흔하게 알고있는 int, float 등을 뜻한다. Reference type은 자료구조이다. Arruy, class , interface 등이 속한다. 다른 점은 value 자체를 가리키는 것과 달리 레퍼런스는 주소를 가리키는 포인터형식이다. Java 에는 포인터가 없다. 그러나 포인터가 없다는게 사용자 입장에서 없다는거지 Java는 활발하게 사용중이다. 컴퓨터구조적으로 들어가면 벨류는 스택에서 관리된다. 그러나 Reference들은 크기를 가변적으로 할당해줘야하기 때문에 동적 메모리 Heap에 저장된다. 이러한 형태로 포인터값들이 힙의 값을 가리키고 있다. Runtime Data Area : 런타임에 저장되는 데이터들. 컴파일타임에 정해지지 않고 런타임에 정해지기 때..