자바를 하는 사람들에게는 메소드(Method)라는 것이 매우 익숙할지 모르겠으나, 코틀린은 메소드라는 표현보다는 펑션(Function)이란 말을 사용한다. 펑션은 사실 메소드보다 더 상위 개념이고, 메소드는 한 클래스내에서 호출이 가능한 펑션이라는 의미를 담고 있다. 코틀린의 경우 클래스를 생성하지 않아도 펑션을 만들 수 있기 때문에 펑션이란 말을 표현하는 것 같은데 펑션과 메소드라는 것부터 코틀린이 자바에서 분기된 사상이 무엇인지 알 수 있을 것이다. Kotlin의 함수 선언법 fun 함수명(인자값) 리턴값 { // 코드내용 } 코틀린의 경우 자바와 큰 차이는 우선 리턴값이 시작부터 선언하는 자바와 다르게 함수선언 이후에 선언을 한다는 점이다. 그리고 변수처럼 인자값에 들어가는 것도 자바의 int a처..
Java로 리스트를 섞는 가장 쉬운 방법은 내장 객체인 Collections 객체의 셔플(Shuffle)을 사용하는 것이다. Shuffle 사용 Collections(리스트) 로또번호를 셔플(Shuffle)로 이용해서 만들면 매우 간단하고, 견고하게 만들 수 있다. 로또번호(Lotto Number) 생성 1-45번호 세팅 List numList = new ArrayList(); for (int i = 1; i [29, 5, 18, 12, 20, 6, 30, 10, 41, 15, 25, 45, 23, 3, 44, 42, 31, 9, 1, 14, 24, 2, 17, 8, 21, 40, 33, 7, 39, 13, 34, 4, 32, 37, 38, 26, 36, 11, 19, 43, 16, 27, 28, 22,..
List안에 들어간 값들을 기준으로 오름차순(Ascending)과 내림차순(Descending) 즉, 정렬을 하는 방법을 알아보도록 하겠습니다. 테스트를 위해서 다음과 같은 주식 종목값들을 넣어봤습니다. 리스트 예제 public static void main(String[] args) { List list = new ArrayList (); list.add("삼성전자"); list.add("테슬라"); list.add("애플"); list.add("엔비디아"); } 이 값들이 오름차순이 된다면, 삼성전자 -> 애플 -> 엔비디아 -> 테슬라 순으로 나와야 될 것입니다. 자바는 Collections이라는 내장 객체를 사용해서 쉽게 정렬을 할 수 있습니다. 오름차순 // 오름차순 Collections.sor..
UnsupportedOperationException 에러는 일반적으로 List 형을 new로 초기화하지 않는 상태에서 Arrays로 생성하였을 시 주로 발생한다. 케이스 public static void main(String[] args) { List tempList = Arrays.asList("aaa"); System.out.println(tempList); tempList.add("bbb"); } 일반적으로 값을 세팅하고, 변경하지 않을 거라면 위와 같이 List형을 Arrays.asList로 초기화해도 아무런 문제가 없으나, new로 생성하지 않는 List의 값을 변경하려 한다면 UnsupportedOperationException 에러가 발생한다. 위 코드를 실행하면 다음과 같은 결과가 나온다..
자바로 파일 및 폴더를 핸들링하기 매우 쉬운데 폴더의 유무를 확인하고, 없을 경우 생성하며 특정 폴더를 삭제하는 것을 알아보도록 한다. C 드라이브에 Project/test 폴더를 생성하고 그 안에 test2라는 폴더를 추가로 생성하였다. 우리는 앞으로 이 폴더안에 test1을 추가로 생성하고, test2는 삭제하는 것을 알아보도록 한다. 폴더 여부 체크하기 (exists) public static void main(String[] args) throws Exception { File folder = new File("c:/project/test/test"); if(!folder.exists()) { // 폴더가 없을 경우 로직 } } Java에서 폴더를 체크하는 것은 파일이 있는지 체크하는 것과 동일하..
이제 막 개발을 시작한 개발자라면 인터페이스의 필요성에 대해서 공감이 안되겠지만, 개발 경력이 어느정도 되었으며 협력을 하였고, 개발을 하기 전에 설계를 하는 개발자라면 인터페이스의 필요성에 대해서 더이상 말을 할 필요가 없을 것이다. 우리가 자동차를 만든다고 해보자 재료는 모두 갖추어져 있고 만들 기술과 장비가 있다고 한다면 현재 가장 필요한 것이 무엇일까? 바로 "설계도"일 것이다. 개발이든 건축을 하든 아니면 자동차를 만들든 제일 먼저 해야 될 것은 설계를 해야 하고 검증을 통해서 이상이 없다면 개발을 시작할 수 있다. 인터페이스는 바로 이 설계도와 유사하다. 개발자들은 비즈니스 로직이 되는 서비스단을 구현하기 위해서 필요한 메소드(method)를 미리 인터페이스화 시킨 후 이를 구현 하여 최종적으..
IndexOf는 문자열에서 특정 단어가 있는지를 찾고 있을 경우 위치값을 리턴하는 내장 함수이다. 위치값은 0부터 시작하기 때문에 0 이상값이 나오면 결과가 리턴이 되고, -1인 경우 해당 값이 없을 경우이다. 그러나 이 메소드는 위치값을 찾을 경우 그 자리에서 종료를 하기 때문에 별도의 처리를 해야 모든 위치를 찾을 수 없다. 내가 검색을 못한건지, 아직 모든 위치를 리턴하는 함수를 찾지 못하였다(혹시나 indexOfAll같은 것이 있나 싶었지만...) 비슷한 역할을 하는 함수로 contains가 있는데 이는 값이 있는지 여부를 찾으며, true, false로 리턴하는 함수이기 때문에 indexOf보다 범용적이지 못하다. 모든 위치 찾기 예제 public static void main(String[] ..
Java는 파일 객체를 다룰 수 있는 File이라는 클래스를 제공한다. 이를 통해 다양한 파일 컨트롤을 할 수 있는데 아주 기본적이고 기초적이면서 프로그램 전공이 아닌 사람들은 힘들어 하는 재귀 함수(Recursive function)에 대해서 작성해보도록 한다. 재귀 함수는 메소드가 자신을 계속 호출하는 즉 재귀호출 기능이 있는 함수를 말한다. 이를 통해 하위 Depth의 값들을 처리할 수 있다. parent code가 있고 child code가 있을 경우 child code는 parent code를 탐색하며 재귀 호출을 할 수도 있고 그 반대로 처리하여 하위 Depth로 내려갈 수도 있다. 백문이불여일타니 아래의 소스코드를 이해해보도록 한다. 재귀함수로 파일 스캔 import java.io.File;..
DB를 가져올 때 날짜 포맷을 변경하여 처리할 수 있지만, 포맷을 변경하기 힘든 NoSQL DB 라든지 혹은 포맷을 변경하기 힘든 케이스의 경우 자바(Java)에서 지원하는 기능인 SimpleDateFormat을 사용하여 포맷을 변경할 수 있다. SimpleDateFormat 날짜를 바꾸기 위해서는 java에 내장되어 있는 SimpleDateFormat을 활용하여 포맷을 변경한다. 라이브러리의 이름처럼 심플하게 데이트 형태로 포맷을 변경한다. 데이트포맷 옵션 포맷문자 날짜 및 시간 요소 표현 예시 G Era designator Text AD y Year Year 1996; 96 Y Week year Year 2009; 09 M Month in year (context sensitive) Month Jul..
아이폰(iPhone)과 안드로이드폰(Android)을 둘다 써봤다면 상대적으로 뛰어난 아이폰의 성능에 감탄하는 경우가 많을 것이다. 그런데 아이러니한 것은 아이폰이 안드로이드폰보다 하드웨어적인 부분에서 상당히 부족한 경우가 많다는 것이다. 안드로이드를 만든 업체가 구글이라는 것을 감안할 때, 아이폰과 구글의 SW의 차이가 큰 것인가? 생각하면 잘못된 판단이다. 이는 아이폰의 폐쇄적인 소프트웨어와 안드로이드의 개방적인 소프트웨어의 차이일 뿐이고, 정확히 말해서 컨셉의 차이이다. 안드로이드의 프로그램은 자바(Java) 베이스이다. 한마디로 자바를 할 줄 알면 안드로이드 App을 만드는데 크게 지장이 없다는 소리이다. 반대로 아이폰은 C언어 기반으로 프로그램을 짜야 한다. C언어로 짠 프로그램은 OS에 맞게 ..
이클립스(Eclipse) C, C++, Java, Python 등 언어를 잘 다루기 위해서는 도구의 역할도 매우 중요하다. 최근에는 성능이 좋고 빠른 인텔리J(IntelliJ)가 국내에서도 트랜드를 따라 많이 쫓아오고 있지만 기본적으로 유료 프로그램이며, 솔루션 및 자사 서비스 개발자가 아닌 사람들은 늘 상 프로젝트 특성에 맞게 커스텀 되어있는 도구를 써야 하다보니 대규모 SI가 많은 한국에서는 무료 프로그램인 이클립스를 사용한다. 한국의 SI에 상당수를 차지하는 정부 기반의 프로젝트(전자정부프레임워크, eGovFramework)도 바로, 이클립스를 베이스로 만들었기 때문에 국내 한정으로 이클립스가 인텔리J보다 사용자 풀이 훨씬 많을 것이다. (물론 상당수는 둘다 상황에 맞게 사용한다) 이클립스는 자바로..
자바(Java)의 세상에 들어가기 위해서는 JDK(Java Development Kit, 자바개발키트)라는 개발환경을 설치하고 JVM(Java Virtual Machine)이라는 가상환경을 세팅해야 한다. (JDK를 설치하면 JVM도 세팅이 된다) JDK는 Java를 개발하기 위한 툴들을 모아놓은 소프트웨어라고 이해하면 되고, JVM은 Java가 어느 OS든지 원활히 돌 수 있게 동일한 환경을 만들어주는 역할을 한다. (JVM에 대해서는 다음 포스팅 참조) 원래 자바는 썬 마이크로시스템즈라는 회사에서 만들어 운영하였지만, 오라클(Oracle)이라는 상업용 DBMS를 만들던 회사가 인수를 한 후 현재 많은 소송과 변형된 JDK들이 존재하게 되었다. 비슷한 케이스로 MySQL을 오라클이 역시 인수하면서 유료..