목록분류 전체보기 (94)
우주코딩

File 클래스 String -> 문자열 Date -> 날짜 File -> 파일 디렉토리 OS에 따라 API 사용법이 다르다. JVM에서 제공하는 API는 OS에 상관없이 같다. JVM의 API에서 해당 OS의 API를 호출하기 때문에 자바 개발자로 각 OS의 API를 알 필요가 없다. App - > File -> OS File System API -> 파일 디렉토리 위치 저장 dll과 lib 컴파일 된 기계어 코드 .lib - 정적 로딩 라이브러리(static linking library) .dll(windows) .so(Unix) - 동적 로딩 라이브러리(dynamic linking library) function이나 structure, class 등의 코드를 모아둔 파일 = "라이브러리(librar..

App 아키텍쳐 App -- 저장 --> List (게시글, 회원, 프로젝트, 작업) List는 메모리이다. (RAM) 파일은 외부저장장치이다 (HDD) List -- 저장 --> 파일 파일(게시글, 회원, 프로젝트, 작업) -- 로딩 --> List App을 종료하더라도 Data를 유지할 수 있다. ------------------------------------------------------- 자바 스트리밍 API -File -FileInputStream -FileOutputStream Date I/O Stream API 주요 클래스 File = 파일, 디렉토리 정보 다루기 FileInputStream = 파일에서 데이터 읽어오는 역할 FileOutputStream = 파일로 데이터를 출력하는 역할..
호출자에게 예외 상황을 알리는 방법 리턴 값 사용하기 int compute(String op, int a, int b) { return 숫자; } 이 리턴 값을 통해 보통 결과로 리턴되지 않을 값을 사용하여 예외 상황을 알린다. 예) return -1211212121212121212211 그러나 그 리턴 값이 정상적인 계산 결과일 수 있다. 이것이 리턴 값을 이용하여 예외 상황을 알리는 방법의 한계이다. 예외 처리 문법의 등장 이유 리턴 값으로 예외상황을 알리는 방식의 한계 극복 예외가 발생하더라도 jvm을 멈추지 않게 만드는 것 유효하지 않은 연산자인 경우 throw 명령을 이용하여 호출자에게 오류 상황을 알린다. throw new RuntimeException("해당 연산자를 지원하지 않습니다.");..

List와 Set Iterable iterator() , forEach() Collection add(), remove(), size(), isEmpty(), contain(), toArray() List get(), indexOf(), set() Set copyOf() HashSet HashSet (= 해시값을 가지고 방 배정을 한다)은 내부적으로 값을 저장할 때 위치 정보를 순서대로 저장하지 않는다. add() 로 저장해서 hashCode() 리턴 받음 해시 값을 가지고 저장할 방의 위치를 결정 이미 hashCode() equals() 의 결과값이 같은 객체가 있기 때문에 중복저장하지 않는다. ArrayList와 HastSet ArrayList는 한줄에 매달려 있다. HashSet은 여러 줄에 매단다..

인터페이스의 유용성을 다시 생각해보기 인터페이스가 없으면 개발자는 자기 마음대로 메서드를 정의한다. ex) ArrayList - append() , delete(), update() ex) LinkedList - add(), remove(), set() 목록을 다루기 위해 ArrayList 나 LinkedList 를 사용할 Client 는 각 클래스에 정의된 메서드를 호출해야하는 번거로움이 있다. 결론은 클래스의 사용법이 달라서 프로그래밍에 일관성이 없어 불편하다. => ArrayList를 LinkedList로 교체하기 쉽지 않다. 코드를 많이 변경해야한다. 인터페이스를 사용하면 개발자가 클래스를 정의할 때 인터페이스에서 정한 규칙에 따라 만들어야한다. 규칙을 정의한다는 것은 객체 사용법을 정의한다는 것..
메서드 레퍼런스 - 스태틱 메서드 레퍼런스 static class MyCalculator { public static int plus(int a, int b) {return a + b;} public static int minus(int a, int b) {return a - b;} public static int multiple(int a, int b) {return a * b;} public static int divide(int a, int b) {return a / b;} } interface Calculator { int compute(int x, int y); } Calculator c1 = MyCalculator::plus; Calculator c2 = MyCalculator::minus; ..

자바 API ArrayList 배열을 이용하여 객체 목록을 다룬다. Collect API List Set Map 중복허용 O X key : 중복불가, value : 중복가능 null 허용 O O HashMap : X Hashtable : O contains() 와 equals()의 관계 contains() 해당 인스턴스와 같은 객체가 있는지 알아낸다. 단 인스턴스 주소를 비교하는 것이 아니라 equals()의 결과가 true 인지 비교한다. hashCode()의 리턴 값이 같을 필요는 없다. indexOf() 사용법 indexOf(값) 목록에 같은 값을 가진 객체의 인덱스를 알아낸다. 값을 비교할 때는 contains()와 마찬가지로 equals()의 리턴 값이 true인 경우 같은 값으로 간주한다. c..
제네릭 public static Object echo(Object obj) { return obj; } echo() 리턴 타입이 Object이기 때문에 String 레퍼런스로 바로 받을 수 없다. 해결책? 형변환 해야 한다. String obj2 = (String) echo(new String("Hello")); 형변환의 불편함을 해소하려면 에코를 파라미터별로 오버로딩 해야한다. public static String echo(String obj) { return obj; } public static Date echo(Date obj) { return obj; } public static Calendar echo(Calendar obj) { return obj; } 형변환을 할 필요는 없지만 중복코드를 여..