* 압축 파일을 만들때 파일 대상이 폴더 단위가 아닌 파일 단위로 해야한다. (당연하겠지 파일스트림으로 읽어 들일때 폴더를 읽을시 에러(FileNotFoundException)가 날테니까) ==> File target_file = new File("C:/test/test.txt"); // 특정 파일의 File객체 * 만약 특정 폴더를 압축하고 싶을때는 폴더 경로로한 File 객체를 만들어서 작업하면 된다. ==> File target_folder = new File("C:/test"); // 특정 폴더의 File객체 File[] target_file = target_folder.getlistFiles(); // 특정 폴더의 하위 파일 & 폴더의 File객체 * 이제는 압축되어 만들어질 Zip파일의 Fil..
* 객체직렬화의 개념 자바 I/O 처리는 정수, 문자열, 바이트 단위의 처리만 지원했었다. 따라서 복잡한 객체의 내용을 저장/복원하거나, 네트워크로 전송하기 위해서는 객체의 멤버변수의 각 내용을 일정한 형식으로 만들어(이것을 패킷이라고 한다) 전송해야 했다. 객체직렬화는 객체의 내용(구체적으로는 멤버변수의 내용)을 자바 I/O가 자동적으로 바이트 단위로 변환하여, 저장/복원하거나 네트워크로 전송할 수 있도록 기능을 제공해준다. 즉, 개발자 입장에서는 객체가 아무리 복잡하더라도, 객체직렬화를 이용하면 객체의 내용을 자바 I/O가 자동으로 바이트 단위로 변환하여 저장이나 전송을 해주게 된다. 또한 이것은 자바에서 자동으로 처리해주는 것이기 때문에, 운영체제가 달라도 전혀 문제되지 않는다. 객체를 직렬화할때 ..
요약 JDK 1.5 Beta 2가 릴리즈 된지 몇 달이 지났다. 아직 Beta 버전이긴 하지만, JDK 1.5에서의 변화를 미리 살펴보기엔 부족함이 없다 생각된다. JDK 1.5에서 가장 먼저 눈에 띄는 것이 바로 문법적인 변화들이며, 본 글에서는 JDK 1.5에서 새로 추가/변경된 문법적 변화중에서 Generics, Autoboxing/unboxing, for 루프에 대해서 알아보도록 하겠다. 타입에 안전한 컬렉션 - Generics JDK 1.4까지의 Collection 객체들은 모두 Collection에 담긴 객체를 얻을 때 Object 타입으로 리턴을 하기 때문에, 반드시 Collection으로부터 객체를 얻은 후 원하는 타입으로 캐스팅을 해야 했다. 따라서 Integer 객체만 넣어야 하는 Co..
개발자가 놓치기 쉬운 자바의 기본 원리에 대하여 기본적이긴 하지만 개발하면서 느끼고 경험한 내용을 정리하였다. 목차 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 열거형의 인스턴스 변수이다. 열거형은 단순히 상수를 모아둔 ..