본문 바로가기

반응형

프로그래밍/초보자를 위한 Java프로그래밍

(22)
Hashtable, HashMap, ConcurrentHashMap 비교 package Post197; import java.util.HashMap; import java.util.Map.Entry; public class HashMapBasic { public static void main(String[] args) { HashMap hm = new HashMap(); // 값 입력 hm.put("key", 0); // HashMap은 값에 null을 허용한다. hm.put("key2", null); /** HashMap은 키값에 null을 허용한다. */ hm.put(null, 0); // 값 출력 hm.get("key"); // 반복 처리 with keySet for( String s : hm.keySet() ){ System.out.println(hm.get(s)); ..
자바 람다식(Lambda Expressions in Java) 자바 8에서 람다식(Lambda Expressions)이 추가 되었습니다. 이번 포스팅은 간단하게 람다식에 대해 알아보고자 합니다. 1. Lambda Expressions 람다식을 간단히 정의하면 다음과 같습니다. 식별자 없이 실행 가능한 함수 표현식 요즘은 정의만 보면 잘 모르겠어요. 부연 설명을 조금 해봅시다. 람다식은 자바 8의 가장 특징적인 기능입니다. 또한 기존의 불필요한 코드를 줄이고 가독성을 향상시키는것에 목적을 두고 있습니다. 대표적으로 반복문이나 비교문이 있겠습니다. 어떤식으로 코드를 줄이는지 한번 알아봅시다. 2. Lambda Expressions Example 자바에서 람다식을 사용하려면 다음과 같은 방법으로 사용이 가능합니다. ( parameters ) -> expression bo..
Java 8 개선 사항 관련 글 모음 완벽한 설계에 이르렀다 함은, 더할 것이 없을 때가 아닌, 뺄 것이 없을 때를 말한다. – 앙투안 드 생텍쥐페리 모 든 기술은 세 단계를 거친다. 처음엔 조잡하게 단순하고 매우 불만족한 기계, 두번째는 매우 복잡한 조율을 거쳐 원형의 결점을 극복하고 그로인해 어느정도 만족스러운 성능을 내도록 설계된 터무니없이 복잡한 기계 뭉치, 세번째는 거기에서 나온 궁극의 타당한 설계. – 로버트 A 하인라인 이 단순성과 적절성을 강조하는 두 명언은 1996년 5월 제임스 고슬링과 헨리 맥길턴이 작성한 백서, 자바 언어 환경(The Java Language Environment)에서 자바 언어의 특징을 강조하면서 인용되었습니다. 자바는 처음부터 뺄 것이 많아 불완전하고 복잡한 2단계 기계인 C++애서 친근함은 유지하면..
Java SE 버전별 특징 정리 (1.4, 5, 6, 7, 8, 9) J2SE 1.4 (Merlin, Hopper, Mantis) JAXP API (XML Processing) Security Extended API Logging API Networking IPv6 Unconnected/Unbound Socket Connected UDP Socket java.net.URI Java Web Start Product New I/O API (NIO) Non-Blocking I/O JDBC 3.0 API Preferences API Regular Expressions (java.util.regex) GUI feature Assertion J2SE 5 (Tiger) Generics Enhanced for Loop (foreach) Autoboxing/Unboxing Type-saf..
초보 Java 웹 개발자들을 위한 학습 로드맵 경고 : 2008년도 글입니다. 시대가 많이 달라졌어요.OKJSP에 자주 가서 요즘 자바 개발자들이 어떻게 살아가나를 보는 편인데, 아주 많이 반복적으로 올라오는 질문이 "대체 뭘 공부해야 하나요? 프레임워크는 Spring을 해야 할까요? iBATIS를 해야 할까요?" 하는 식의 질문들이다(이 질문은 사실 말이 안된다. 왜 그런지 읽다보면 나온다). Java는 웹 관련 프레임워크들이 너무 다양하고, Ruby나 Python 같은 경우에는 RubyOnRails나 Django 처럼 하나의 프레임워크 안에 기능별 프레임워크들도 모두 다 All in one 형태로 들어 있어서 혼란을 주지 않는 반면, Java는 각 영역별로 프레임워크가 모두 다르고, 또한 각 영역별로 존재하는 프레임워크들의 종류도 많아서 초보 개..
Thinking in JAVA 9. 인터페이스 인터페이스에 대하여 각서브타입(파생 클래스)마다 다른 내용을 실행할 수 있도록 한 것. interface 키워드는 더 진보된 개념을 제공한다. abstract 키워드는 하나 이상의 미정의 메소드를 클래스에 만들 수 있게 해준다. 즉, 구현이 없는 인터페이스 부분을 제공하는 것이다. 구현은 이 클래스로부터 상속받은 클래스에서 한다. interface 키워드는 구현 부분이 아예없는 완전한 추상 클래스 이다. 따라서 인터페이스는 쌍방 클래스간의 프로토콜 설정에 사용된다. 많은 사람들이 가능하며녀 어디서든 인터페이스와 factory를 생성한다. 구현을 다르게하여 사용할 필요가 있다고 생각하기 때문에 항상 그러한 추상 개념을 추가하는것이다. 인터페이스보다 클래스를 선호하는 것이 좋은 생각이다. 클래스로 시작하자...
Thinking in JAVA 7. 클래스 재사용하기 컴포지션(composition) : 새 클래스에 기존 클래스의 객체를 생성 이를(composition)이라 하며, 형식이나 개념이 아닌 코드의 기능을 재사용하는 것이다. lazy 초기화 : 그 객체를 실제로 사용하기 바로 직전에 초기화 한다. 이를 늦은 초기화라고 하며, 객체 생성에 시간이 많이 소요되거나, 객체가 매번 생성될 필요가 없는 경우에 부담을 줄일 수 있다. 상속(inheritance) : 새 클래스를 기존 클래스의 한 타입으로 만든다. 즉, 기존 클래스의 형태를 가져온 후 그것을 수정하지 않고 그 곳에 코드를 추가 한다. 자바의 root 클래스인 Object를 암암리 상속 받음 extends시 상속받는 클래스의 베이스 클래스의 모든 필드와, 메소드를 자동으로 갖는다. 생성자오버로드, supe..
Thinking in JAVA 6. 접근제어 리팩토링 - 작성한 코드를 더 좋은 방법으로 재구성하는 것(읽기 쉽고 이해하기 쉬워서 유지보수가 용이하도록 기존 코드를 재 작성) public private protected 최대접근에서 최소접근까지의미를 부여 public - 최대접근 private - 최소접근 , 은닉성 protected - 상속(inheritance) 다른 패키지에 있는 베이스 클래스의 특정 멤버를 파생 클래스에서 접근할 수 있도록 해야 할 경우, 이때 protected를 사용 하며 protected는 패키지 접근도 허용한다. 즉 같은 패키지에 있는 다른 클래스들이 protected 멤버에 접근 할 수 있다. (상속 관계가 아니더라도) 패키지 : 라이브러리 유닛 - 하나의 네임 스페이스 하에 조직된 클래스의 그룹을 뜻함 코드 구조 :..
Thinking in JAVA 5. 초기화와 클린업 객체를 생성할 때 초기화를 위하여, 생성자 라 부르는 특별한 메소드를 제공하여 모든 객체의 초기활르 보장할 수 있다. 인자가 없는 생성자를 디폴트 생성자라 한다. 아무런 생성자를 정의 하지 않으면 컴파일러는 자동으로 디폴트 생성자를 만들어준다. 메소드 오버로딩 인자의 순서만 달라져도 두 메소드의 식별이 가능하다. 하지만 그렇게 하면 유지보수가 어려워지기 때문에 보통은 하지않는다. this 키워드 메소드 호출과 필드 앞에 지나치게 this,를 붙이는 경우가 있다. 그렇게 하는 것이 더 확실하고 명시적이라는 이유에서다. 그러나 그렇게 하지 말자, 우리가 높은 수준의 언어를 사용하는 이유가 있다. 그런 것을 언어에서 해 주기 때문이다. 만일 필요하지도 않는데 this를 붙인다면, 우리 코드를 읽는 모든 사람들..
Thinking in JAVA 4. 프로그램 실행 제어 if-else 문 반복문 while, do-while(적어도 한번은 실행됨) , for(초기화 수식; Boolean - 조건식 ; 증가식) foreach 문 자바se5 버전 이상 return 메소드의 실행을 끝내고 값을 반환할 때, 메소드 실행을 중단 하고 그 시점의 값을 반환 할때 break 나머지 명령문을 실행하지 않고 루프를 종료 continue 나머지 명령문을 실행하지 않고 루프로 다시 가서 반복 수행 goto switch

반응형