분류 전체보기
-
[Java] 체크예외와 언체크 예외(Checked, Unchecked Exception)란?Language/Java 2020. 4. 10. 11:18
에러(error)와 예외(exception)의 차이는 알 것이다. 에러의 예시는 메모리 부족(OutofMemoryError)이나 스택오버플로우(StackOverflowError)처럼 복구하기 힘든 것이고, 예외는 상대적으로 덜 심각해 처리할 수 있는 것이다. 자바는 예외를 클래스로 만들어서 관리를 하고 전체 계층 구성도는 위와 같다. 여기서 잘 봐야 할 점은 Exception 클래스와 RuntimeException 클래스를 주의 깊게 보자. RuntimeException에 대해서 먼저 말하자면 말 그대로 프로그래머의 실수에 의해서 Runtime시에 예외가 발생할 수 있는 것들이다. (예를들어, 범위 밖의 인덱스를 참조한다던지, 분모를 0으로 나눈다던지 등이 있다) Checked와 Unchecked를 말하..
-
[Java] JDBC를 사용한 데이터베이스 연동(Mysql)DBProgramming/JDBC 2020. 4. 9. 23:57
1. JDBC API Java DataBase Connectivity의 약자로 JDBC는 자바 언어로 데이터베이스 프로그래밍을 하기 위한 라이브러리이다. JDBC는 DBMS에 종속되지 않는 관련 API를 제공한다. JDBC API는 JDK에서 제공하며 JDBC 프로그래밍을 위해서는 JDBC드라이버가 필요하다! JDBC 드라이버는 각 DBMS 회사에서 제공하는 라이브러리 압축파일이다. 우리는 MySQL 데이터베이스관리시스템을 사용하지만 오라클을 사용한다면 오라클용 JDBC 드라이버가 필요하다. 2. JDBC API 클래스 JDBC는 다양한 클래스와 인터페이스로 구성된 패키지 java.sql와 javax.sql로 구성되어 있다. 데이터베이스를 연결하여 테이블 형태의 자료를 참조 SQL 문을 질의 SQL 문의..
-
[Java] HashMap을 정렬하는 방법Language/Java 2020. 4. 8. 23:37
Map의 구조처럼 Key, Value의 형태를 정렬을 할 때는 Comparable or Comparator 인터페이스를 구현한 후에 해당 인터페이스에 맞는 compare or compareTo 메소드를 오버라이딩 해서 정렬의 기준을 재정의 한 후에 하면 된다는 것은 알았지만 자세히 사용법을 정리해보려 한다. Key를 기준으로 정렬을 하고 싶다는 그냥 TreeMap을 이용하면 된다. 하지만 Value를 기준으로 정렬하고 싶다면 어떻게 해야할까? 1. Value를 기준으로 Map을 정렬하기 Value를 기준으로 정렬하고 싶다면 위에서 말한 것처럼 Comparator 인터페이스를 implements 한 후에 compare 메소드를 오버라이딩 하여야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 ..
-
[Java] LinkedHashMap은 무엇일까?Language/Java 2020. 4. 8. 18:48
HashMap에 대해서 간략하게라도 알고 있다면 LinkedHashMap을 이름만 봐도 LinkedList + HashMap 합쳐진 것이라고 추측할 수 있다. HashMap은 순서가 존재하지 않는다. (즉 버전에 따라 환경에 따라 달라진다는 뜻이다) 그래서 내가 추측했던 것 처럼 실제로 LinkedHashMap은 HashMap에서 자료들이 입력된 순서를 기억하는 것을 추가하기 위해 만든 클래스이다. 사실 왜 HashMap이 데이터의 순서를 유지하지 않는지?에 대해서는 깊게 생각해본적이 없다. 이번에 짧게라도 생각해보면서 공부한 것을 정리해보려 한다. HashMap이 데이터의 순서를 유지하지 않는 이유 HashMap은 연관 배열을 저장하기 위한 자료구조이다. (연관 배열이라는 말은 처음 들어본다) 그러면 ..
-
[Java] char배열과 String 클래스의 차이는?Language/Java 2020. 3. 31. 15:08
지금까지 여러 문자, 즉 문자열을 저장할 때 String타입의 변수를 사용했다. 사실 문자열이라는 용어는 '문자를 연이어 늘어놓은 것'을 의미하므로 문자배열인 char배열과 같은 뜻이다. 자바에서는 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 무엇일까? String클래스는 char배열에 기능(메서드)을 추가한 것이다. char배열과 String클래스의 한 가지 중요한 차이가 있는데, String객체(문자열)는 읽을수만 있을 뿐 내용을 변경할 수 없다는 것이다. 1 2 3 4 5 6 7 public class Test { public static void main(String[] args) { String str = "Java"; str = str + "8"; System.ou..
-
[Java] Java는 Call by Value 일까? Call by Reference 일까?Language/Java 2020. 3. 17. 15:32
https://devlog-wjdrbs96.tistory.com/44?category=830071 [JAVA]Call by Value 와 Call by reference 란 ? C언어를 주로 공부 했던 나는 Call by value 와 Call by reference 에 대해서 call by value 는 값을 넘기는 거고 call by reference 는 포인터를 이용해서 주소를 넘긴다고 알고 있다. 하지만 누군가 나에게 이.. devlog-wjdrbs96.tistory.com Call by Value와 Call by Reference에 대해서는 위에서 참고하길 바란다. 현재 운영하는 블로그는 스스로 공부한 것을 나중에 다시 찾아보기 쉽게 정리하는 공간입니다. 1. Java는 Call by Value..
-
[Java] try with resources란?Language/Java 2020. 2. 27. 22:40
자바를 이용해 외부 자원에 접근하는 경우 주의해야할 점은 외부자원을 사용한 뒤 반납을 해줘야 한다는 점이다. 1. 자원 반납과 finally 1-1) 자원반납 문제 1 2 3 4 변수1 = new 자원객체1(); // 자원 할당 변수1.작업(); 변수1.close(); // 자원 반납 위 코드에서 작업() 메소드가 에러없이 실행된 경우라면 close() 메소드가 정상적으로 작동해서 자원을 반납한다. 하지만 작업() 메소드에서 에러가 발생한다면 close( 메소드가 실행되지 않아서 자원이 반납하지 못하는 문제가 생긴다. 1-2) finally 블럭에서 자원 반납 1 2 3 4 5 6 7 8 9 10 11 12 13 변수1 = null; 변수2 = null; try { 변수1 = new 자원객체1(); 변수..
-
시간복잡도 (Time Complexity)란?Computer Science/Data_Structure 2020. 2. 18. 22:35
1. 알고리즘 복잡도 계산 항목 시간 복잡도: 알고리즘 실행 속도 공간 복잡도: 알고리즘이 사용하는 메모리 사이즈 2. 알고리즘 성능 표기법 Big O (빅-오) 표기법: O(N) 알고리즘 최악의 실행 시간을 표기 가장 많이/일반적으로 사용함 아무리 최악의 상황이라도, 이정도의 성능은 보장한다는 의미이다. 3. 시간복잡도 가장 널리 사용되는 알고리즘의 수행시간 기준 더보기 알고리즘이 실행되는 동안 수행하는 기본적인 연산의 수를 입력의 크기에 대한 함수로 표현 시간 복잡도가 높다는 것은 입력의 크기가 증가할 때 알고리즘의 수행 시간이 증가한다는 의미이다. 하지만 시간 복잡도가 낮다고 해서 언제나 더 빠르게 동작하는 것은 아니다. 입력의 크기가 작을 때는 시간 복잡도가 높은 알고리즘이 더 빠르게 동작할 수도..