목록Programing & Coding/JAVA (21)
S E P H ' S
왜 우린 StringBuilder를 썼을까? StringBuilder는 단순히 알고리즘 문제를 풀면서 정답인 문자가 길어서 출력하는데 긴 시간이 걸리면 사용했었다. 그런데 한번도 그 이유에 대해서는 고민해보지는 않았던 것 같다. SWEA 15758 무한 문자열 문제를 풀면서 다음과 같은 부분이 있었다. (자세한 것은 링크 참조) // 코드 1 for (int i = 0; i < S_len; i++) { str_T += str_T; } 반복되는 문자열을 비교하기 위해 각 두개의 문자열의 길이 만큼 각각 더해나가는 코드인데 이대로 코드를 제출했더니 메모리초과로 인해서 런타임 에러가 발생했다. 물론 역시 StringBuilder에 대해서 생각은 하지 않고 "이걸 써서 제출해야겠다" 하고 제출을 했고 그렇게 문..
일반 배열을 ArrayList로 변환하는 메소드이다. // # Code 1. String[] arr = {"ABC", "DEF", "GHIK"}; List strList = Arrays.asList(arr); System.out.println(strList); System.out.println(arr); Arrays.asList()는 Arrays의 정적 클래스인 ArrayList를 리턴한다. java.util.ArrayList 클래스와는 다른 클래스이다. 단지 리턴 타입 클래스명이 ArrayList이고, Arrays 클래스의 inner class인 ArrayList를 리턴하는 것이다. java.util.Arrays.ArrayList는 고정크기의 배열을 가진 리스트를 리턴한다. 즉, 크기가 변경되는 동작인..
오버로딩(Overloading) 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있습니다. 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다' 라는 뜻입니다. 자바에서 하나의 메소드 이름으로 여러 기능을 구현할 수 있기 때문에 '과적하다'라는 뜻의 이름을 붙여준 것으로 보입니다. 오버로딩의 조건 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 합니다. 주의할 점은 리턴 값만 다른 것은 오버로딩을 할 수 없습니다. 위와 같이 print라는 같은 이름을 가진 네 개의 메소드가 매개변수의 개수와 타입을 다르게 지정하여 사용하는 것이 가능하다는 것을 잘 보여주고 있습니다. 또한 ..
Final final 키워드는 변수(variable), 메소드(method), 클래스(class)에 사용될 수 있습니다. final 키워드는 어디에 사용되느냐에 따라서 의미가 달라지지만 공통적으로 무언가를 제한한다는 의미를 가집니다. - final variable 변하지 않는 상수값이 되어 새로 할당할 수 없는 변수가 된다. - final method 다른 메소드에서 오버라이딩 하지 못한다. - final class 다른 클래스에서 상속하지 못한다. 변수(Variable) 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미를 가집니다. 수정될 수 없기 때문에 초기화는 필수입니다. 만약에 객체안의 변수라면 생성자, static 블럭을 통한 초기화는 허용됩니다. 수정할 수 없다는 범위는 그 변수의 ..