개발자가 놓치기 쉬운 자바의 기본 원리에 대하여 기본적이긴 하지만 개발하면서 느끼고 경험한 내용을 정리하였다. 목차 1 객체지향의 구멍 static 1.1 Java는 객체지향 언어이다? 1.2 전역변수 2 Java는 Pointer언어이다? (Java에는 Pointer밖에 없다?) 2.1 Java는 primitive형을 제외하곤 모두 Pointer이다 2.2 null은 객체인가? 2.3 String에 대하여 2.4 객체지향의 캡슐화 파괴 주의 2.5 배열에 대하여 2.5.1 배열은 object 인가? 2.5.2 배열의 length는 왜 field(member variable)인가? 2.5.3 final과 배열에 대하여... 2.5.4 "Java에서의 다차원 배열은 존재하지 않는다." 2.6 인수(param..
1. J2SE 5.0(타이거-호랑이) 베타버전이 2004년 초 공개됐다. 이 릴리즈는 품질, 모니터링과 관리 편의, 성능 향상과 확장성 그리고 개발과 데스크탑 용도 사용 편의라는 몇몇 핵심 주제에 포커스를 맞추고 있다. 2. Joshua Bloch 가 쓴 타이거에 관한 시가 아래에 인용되어 있다. 3. 제너릭(Generics) - 컴파일 할 때 컬렉션에 자료형을 안전하게 사용할 수 있도록 보장해주며, 짜증나는 캐스팅을 없애준다. 시 인용: 가장 짜증나는 캐스팅에게 우리는 드디어 작별을 고하네 제너릭의 불타오르는 창끝에 캐스팅은 사라져가네. String 객체를 위해 java.util.List를 사용해서 값을 가져올 때마다 String 으로 캐스팅을 해야했다. List names = new ArrayList..
형이 안전한(Typesafe) enum - 이것은 말 많고 에러 나기 쉬운 점들이 없이 Typesafe Enum 의 잘 잘려진 장점들을 제공해 준다. 주의 : enum 은 Java 5에새 새로 생긴 키워드이므로, 옛날 자바 코드에서 enum을 형의 이름(변수/클래스/메소드 이름 등)으로 사용했다면, -source 1.5 를 사용하기 위해 그것들을 모두 수정해야 한다. 시 인용: 정수 enum 은 곧 사라지리 너무 오랫동안 우리를 괴롭혔던 적과 함께. 형이 안전한 enum의 강력한 힘은 우리의 적을 무력화 시키네. * Coin.java -------------------- public enum Coin { penny(1), nickel(5), dime(10), quarter(25); Coin(int val..
enum 은 열거형으로, 클래스와같이 선언하여 내부에 필요한 요소들을 상수처럼 열거해놓고 사용한다. enum의 사용방법은 enum EnumTest { A, B, C, D; } 와 같이 선언하여 EnumTest et = EnumTest.A; 와 같이 열거된 A형의 객체를 생성할수도있다. 그리고 주 클래스의 외부에 선언된것이 아니라면 static 과 같이 적용되어 EnumTest.A 또는 EnumTest.B 와 같이 상수로 사용할수도 있다. 그리고 enum은 클래스와 마찬가지로 생성자를 만들어 사용할수도 있으며 맴버 메소드및 맴버 변수를 사용할수도 있다. 기본적으로 생성자를 만들지 않을경우 default 생성자가 자동으로 생성된다.(클래스와 같다.) 생성자는 enum EnumTest { A(10,20), B..
열거형 상수 (enum 타입) 정의 예제 파일명: Foo.java public class Foo { enum Week { 월, 화, 수, 목, 금, 토, 일 } // 끝에 세미콜론(;)을 붙이지 않음 enum RGB { red, green, blue } public static void main(String args []) { // Week 이라는 새로운 자료형으로 Day 라는 변수를 만들어, "금"을 대입. Week Day = Week.금; System.out.println(Day + "요일"); // 출력 결과: 금요일 System.out.println(RGB.blue); // 출력 결과: blue System.out.println(Week.토); // 출력 결과: 토 Day = Week.일; Sys..
특정 값만을 가질 수 있는 데이터형을 정의할 때 사용 단순히 클래스에 상수를 모아둔 것과 달리 상수를 정의한 새로운 클래스형을 정의하는 것 AccessModifier enum 열거형이름{ 상수들 나열,…. } 열거형은 일반 클래스 정의에서 만들어진 레퍼런스형과 마찬가지로 변수의 선언이 가능하다. 열거형이름 변수명; 열거형에 의해서 선언된 변수는 오로지 열거형에서 정의된 값들만 가질 수 있다. public enum Color{ Red, Geen, Blue } Color myColor = Color.red; 열거형에 선언된 각 상수값은 실제로는 해당 열거형의 인스턴스이다. Color.Red는 일정한 데이터형을 갖고 있는 상수값이 아니라, Color 열거형의 인스턴스 변수이다. 열거형은 단순히 상수를 모아둔 ..