본문 바로가기

Java

(22)
Java- 사용자 지정 예외와 예외처리 사용자 지정 예외 생성 일반 예외 생성 public class xxxException extends Exception{ // Exception을 상속받는 경우 public xxxException(){} public xxxException(String msg){ super(msg); } } 일반 예외의 경우 Exception를 상속받는다. 런타임 예외 생성 public class xxxException extends RuntimeException{ // RuntimeException을 상속받는 경우 public xxxException(){} public xxxException(String msg){ super(msg); } } 실행 예외의 경우 RuntimeException를 상속받는다. 예외 처리 try..
Java- 제네릭(3) 와일드 카드 제네릭 클래스간 상속이 불가한 경우 예시 Box와 Box은 상속관계를 형성하지 않는다. Box와 Box은 상속관계를 형성하지 않는다. Object와 String이 상속관계를 가진다고 해도 Box와 Box은 상속관계를 형성하지 않는 별개의 자료형이라는 것을 제네릭(2)에서 설명했다. 대신 와일드 카드를 이용하면 가능하다. 와일드 카드 와일드 카드 문법 class Box{ private T ob; public T get() { return ob; } public void set(T ob) { this.ob = ob; } @Override public String toString(){ return ob.toString(); } } class UnBoxer{ public static T openBox(Box b..
Java- 제네릭(2) 제네릭 클래스의 심화 문법 제네릭 클래스간의 상속 일반 클래스간 상속이 가능하듯이 제네릭 간에도 상속이 가능하다. class Box{ T ob; public T get() { return ob; } public void set(T ob) { this.ob = ob; } } class SteelBox extends Box{ SteelBox(T o){ ob = o; } } public class ExtendedGenericClass { public static void main(String[] args) { Box iBox = new SteelBox(123); //Box oBox = new SteelBox(123); //Box nBox = new SteelBox(123); } } 제네릭 클래스 SteelBo..
Java- 제네릭(1) 제네릭 제네릭이란? 제네릭은 대충 봤을 때는 템플릿이랑 똑같다. 근데 완전히 똑같진 않고 살짝 차이가 있긴한데 이건 나중에 얘기하자. 제네릭 클래스의 생성 class Orange{ @Override public String toString(){ return "this is an Orange"; } } class Apple { @Override public String toString(){ return "this is an Apple"; } } class Box{ //제네릭 클래스 private T ob; Box(T ob){ this.ob = ob; } void showInfo(){ System.out.println(ob); } T get(){ return ob; } } public class FruitA..
Java- Arrays 클래스 배열의 복사 새로운 배열 생성 후 반환 - type[ ] copyOf(type[ ] original, int newLength) original에 전달된 배열을 첫번째 요소부터 newLength의 길이만큼 복사. 여러 자료형으로 오버라이딩 되어있음. - type[ ] copyOfRange(type[ ] original, int from, int to) original 배열의 인덱스 [from, to)의 내용을 가진 배열을 새로 생성해서 반환한다. 기존 배열에 내용 복사 - void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) 배열 src의 srcPos 에서 배열 dest의 destPos로 length 만큼 복사. 배열의 ..
Java- Random 클래스, 난수 생성 Random 클래스 간단하니 대충 설명한다. Random 인스턴스는 난수를 생성시 사용하며 생성자의 인자로는 시드값이 들어간다. 시드를 안 넣는다면 1970년 1월 1일 부터 지금까지 지난 밀리초 단위의 시간이 시드값으로 들어가서 난수를 생성한다. import java.util.Random; /* Random(){ this(System.currentTimeMillis()); //Random(long seed)의 디폴트 생성자 } */ public class RandomNumberGenerator { public static void main(String[] args) { Random rand = new Random(); // 인자로 seed 전달. // 인자가 없을 시 seed로 System.curren..
Java- BigInteger, BigDecimal 클래스 매우 큰 정수를 표현하는 BigInteger 클래스 기존 정수를 표현함에 있어서 int와 long의 경우 그 크기에 한계가 있어 제약이 존재했다. 이를 해결하기 위한 클래스가 BigInteger 클래스이다. 얘는 따로 사이즈의 제약이 없다. 기본적으로 int, long과 같은 기본 자료형으로 표현되는 것이 아닌 문자열로 표현되기에 이러한 제약에서 벗어날 수 있다. 생성 BigInteger big = new BigInteger("1000000000000000000000000000000000000000000000000000000000"); 위와 같이 일반적인 클래스 인스턴스 생성하듯이 생성한다. 특이한 점이라면 내부 값이 문자열의 형태로 되어있고 그 수의 사이즈가 일반적인 자료형으로는 표현할 수 없을 정도로..
Java- 래퍼 클래스 기본 자료형의 값을 감싸는 래퍼 클래스 래퍼 클래스의 기능 래퍼 클래스는 기본 자료형의 값을 감싸는 클래스이다. 종종 기본 자료형 인스턴스가 필요한 일이 있다. int 형 인스턴스, double 인스턴스 등등... 그러나 기본 자료형 같은 경우 인스턴스를 생성하지 않는다. 그래서 그럴 때는 래퍼 클래스를 이용하여 기본 자료형의 값을 감싼다. 래퍼 클래스의 종류 Boolean Character Byte Short Integer Long Float Double 박싱 / 언박싱 박싱은 값을 인스턴스에 감싸는 것을 말하고, 언박싱은 저장된 값을 꺼내는 것을 말한다. 박싱은 인스턴스를 생성하는 과정에서 진행되고, 언박싱은 메소드를 호출하여 진행한다. 참고로 래퍼 인스턴스들은 담고 있는 값의 수정이 불가하다 (마치..