Language/Java
-
[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(); 변수..
-
[Java] Generic 개념 및 정리Language/Java 2020. 1. 22. 17:21
Generic 정의 일반적인 코드를 작성하고, 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법이다. 타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 하는 것이다. 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. Generic은 컬렉션, 람다식, 스트림등에서 널리 사용된다. 1 2 3 4 5 6 7 8 9 public class Person { public T info; public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); } } Generic 타입이란? 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 선언시 클래스 또는 인터페이스 이름 뒤에 ..
-
[Java] equals() 해시코드 비교 및 개념 정리Language/Java 2020. 1. 19. 19:50
어떤 백준 알고리즘 문제를 풀다가 문자열 비교해서 같으면 카운트하는 문제가 있었는데 == 을 써도 도저히 먹지 않았다. 왜 안되는지 이해가 안돼서 검색을 해보니 문자열 비교는 equals 를 해야한다고 했다. 그래서 그 차이점을 정리하려고 한다. 들어가기전에 알아보기 equals메소드와 hashCode() 메소드는 모든 클래스의 최상 클래스인 Object의 메소드라는 것을 알아두자. 2. equals 메소드와 == 연산자 가령 new 연산자를 이용하면 힙 영역에 메모리가 할당된다. 하지만 new를 이용하지 않고 그냥 참조변수에 값을 넣어버리면 상수 풀이라는 곳을 가르키기 때문에 위의 사진처럼 str2와 str3는 같은 곳을 가르키게 된다. 1 2 3 4 5 6 7 8 9 10 11 String str1 ..
-
[Java] Iterable 과 Iterator 이란?Language/Java 2020. 1. 18. 00:02
Collection framework는 뭔가 되게 많고 복잡한 느낌이 들어서 완벽하게 정리가 된 느낌은 아니었다. 가령 Iterator는 어떤 역할인지는 알겠는데 어떤 계층구조를 갖고 있는지 궁금했고, 공부하다보니 Iterable이 있길래 어떤 차이가 있는지도 모르겠어서 정리하려고 한다. 1. Iterable 이란 무엇인가? Collection 인터페이스와 List, Set, Queue 인터페이스의 계층구조는 알고 있었지만, Iterable이 Collection의 상위 인터페이스 인지는 잘 몰랐다. 그래서 인텔리제이에서 내부 구현 코드를 확인해봤다. 1 2 3 4 5 6 7 8 9 10 public interface Collection extends Iterable { // Query Operations..
-
[JAVA] next(), nextLine() 의 차이Language/Java 2020. 1. 16. 20:14
나는 지금까지 next()와 nextLine()의 차이는 단순히 한 줄을 전부 입력받고 싶을 때(한 문장을 입력한다던지)는 nextLine()을 사용하고 한 단어씩 입력하고자 할 때는 next()를 사용한다 정도의 가볍게 알고있었다. 하지만 약간의 차이점은 존재했고 주의사항을 확실하게 짚고 넘어가고자 한다. next(), nextLine()는 Scanner 클래스의 메소드이다. 공통점은 둘다 문자열로 반환을 시켜준다는 점이고 차이점은 개행문자를 무시하냐 안하냐의 차이라고 할 수 있다. 메소드 참고 1. 입출력시 주의사항 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.util.Scanner; public class Test { publ..
-
[JAVA] Array.sort 와 Collections.sort 의 차이Language/Java 2020. 1. 13. 18:36
두개의 차이는 그냥 직관적으로도 정렬을 해주는 역할이고, Array.Sort는 배열을 정렬해주는 것이고 Collections.sort는 클래스의 객체를 정렬해주는 것이라고 생각이 든다. 파이썬에서는 sort가 있어서 너무 편했는데 자바는 없는 줄 알았지만 자바도 있었기 때문에 정리하려 한다. 1. Array.sort (오름차순) Array.sort는 java.util.Arrays에 포함되어 있다. 따라서 import를 시켜서 사용을 해야한다. 사용법에 대해서 알아보자. 위처럼 배열을 만들어서 java.util.Arrays를 import 시켜서 Arrays.sort(참조변수)를 하면 정렬이 된다. 정렬이 되는 기준은 오름차순으로 숫자 > 대문자 > 소문자 > 한글순 으로 정렬이 된다. 1-1) 배열 복사 ..
-
[JAVA] ArrayList와 LinkedList의 차이Language/Java 2020. 1. 12. 20:54
ArrayList vs LinkedList 차이 List 인터페이스의 구현체는 뭐가 있을까요? Stack, Vector, ArrayList, LinkedList가 있습니다. 이 중에서도 대표적인 클래스인 ArrayList, LinkedList 차이에 대해 정리해보겠습니다. ArrayList란? ArrayList는 중복을 허용하고 순서를 유지하며 인덱스로 원소들을 관리한다는 점에서 배열과 상당히 유사합니다. 배열은 크기가 지정되면 고정되지만 ArrayList는 클래스이기 때문에 배열을 추가, 삭제 할 수 있는 메소드들도 존재합니다. 하지만 추가했을 때 배열이 동적으로 늘어나는 것이 아니라 용량이 꽉 찼을 경우 더 큰 용량의 배열을 만들어 옮기는 작업을 하게 됩니다. 내부 코드를 보면서 ArrayList에 ..
-
[JAVA] Call by Value 와 Call by reference 란 ?Language/Java 2020. 1. 3. 15:29
C언어를 주로 공부 했던 나는 Call by value 와 Call by reference 에 대해서 call by value 는 값을 넘기는 거고 call by reference 는 포인터를 이용해서 주소를 넘긴다고 알고 있다. 하지만 누군가 나에게 이 개념에 대해서 자세히 묻는다면 나도 깊이있게 이해한 것이 아니기 때문에 위에서 말한 대답정도로만 대답을 할 거 같다. 그래서 먼저 이 개념을 한번 더 정리를 한 후에 JAVA 에서의 Call by value 와 Call by reference 에 대해서 알아보겠다. https://wayhome25.github.io/cs/2017/04/11/cs-13/ 강의노트 12. 함수 호출방식(call-by-value, call-by-reference, call-b..