JAVA

JAVA

[지네릭스] 애너테이션

애너테이션 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서, 유용한 정보를 제공 소스 변경에 따른 관련 문서의 불일치 발생가 종종 발생하였다. 그래서 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하다는 것이 낫다고 생각하여 애너테이션이 등장하였다. /** ~ */는 javadoc.exe를 위한 주석이다. javadoc.exe는 소스코드의 주석으로부터 HTML문서를 생성해 낸다. 애너테이션의 사용 예(JUnit에 정보를 제공하기 위한 애너테이션) 표준 애너테이션 Java에서 제공하는 애너테이션이다. 아리 5개는 메타애너테이션으로 애너테이션을 만들 때 사용한다. @Override 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다. 오버라이딩할 때 메서드이름을 잘못 적는 실수를 하는 경우가..

JAVA

[지네릭스] 열거형

열거형(enum) 관련된 상수들을 같이 묶어 놓은 것 Java는 타입에 안전한 열거형을 제공한다.(값 & 타입 모두 체크) if(Card.CLOVER==Card.TWO)// true지만 false이어야 의미상 맞음 if(Card.Kind.CLOVER==Card.Value.TWO) {// 컴파일 에러. 타입이 달라서 비교 불가 열거형의 정의와 사용 열거형을 정의하는 방법 enum 열거형이름 { 상수명1, 상수명2, ... } 열거형 타입의 변수를 선언하고 사용하는 방법 열거형 상수의 비교에 ==와 compareTo() 사용가능 열거형의 조상 java.lang.Enum 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다. values(), valueOf()는 컴파일러가 자동으로 추가 열거형에 멤버..

JAVA

[지네릭스] 지네릭스

지네릭스(Generics) 컴파일 시 타입을 체크해 주는 기능 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 // Tv객체만 저장할 수 있는 ArrayList를 생성 ArrayList tvList = new ArrayLIst(); tvList.add(new Tv());// OK tvList.add(new Audio());// 컴파일 에러. Tv외에 다른 타입은 저장 불가 지네릭스의 장점 타입 안정성을 제공 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해짐 타입 변수 클래스를 작성할 때, Object타입 대신 타입 변수(E)를 선언해서 사용 변수 이름은 무엇을 사용해도 상관없다. (E:Element, T:Type / E 대신 T 사용가능) 타입 변수에 대입하기 객체를 생성 시, 타입 변수(E..

JAVA

스트림(Stream)

스트림 다양한 데이터 소스(컬렉션, 배열 등)를 표준화된 방법으로 다루기 위한 것으로, 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터 소스를 추상화했다는 것은 데이터 소스가 무엇이든 간에 같은 방식으로 다룰 수 있게 되었다는 것과 코드의 재사용성이 높아졌다는 것이다. String[] strARr = {"aaa", "ddd", "ccc"}; List strList = Arrays.asList(strARr); 스트림 생성 Stream strStream1 = strList.stream();// 스트림을 생성 Stream strStream2 = Arrays.stream(strArr);// 스트림을 생성 데이터를 읽어서 정렬하고 출력 strStream1.sorted()..

JAVA

람다(Lambda)

Java : OOP 언어 JDK1.8부터 함수형 언어의 기능을 추가하였다. 이로 인해 함수형 언어의 장점을 자바에서도 누릴 수 있게 되었다. 람다식(Lambda Expression) 함수(메서드)를 간단한 '식(Expression)'으로 표현한 것이다. 람다식을 익명 함수라고도 한다. 함수와 메서드의 차이 근본적으로는 동일하다. 함수는 일반적인 용어이며, 메서드는 객체지향개념의 용어이다. 함수는 클래스에 독립적이고, 메서드는 클래스에 종속적이다. 람다식 작성하기 메서드의 이름과 반환타입을 제거하고 매개변수 선언부와 몸통{ } 사이에 '->'를 추가한다. 반환값이 있는 경우, return문 대신 식이나 값으로 대신할 수 있다. '문장'이 아닌 '식'이므로 끝에 ';'를 붙이지 않는다. 람다식에 선언된 매개..

JAVA

[java.math] BigInteger, BigDecimal

BigInteger 클래스 가장 큰 정수형 타입인 long으로 표현할 수 있는 값은 10진수로 19자리 정도이다. 이보다 더 큰 값을 다룰 때 BigInteger를 사용한다. 내부적으로 int 배열을 사용한다. final int signum;// 부호 final int[] mag;// 값 생성 BigInteger val; val = new BigInteger("12345678901234567890");// 문자열로 생성 val = new BigInteger("FFFF", 16);// n진수의 문자열로 생성 val = BigInteger.valueOf(1234567890L);// 숫자로 생성 다른 타입으로의 변환 String toString()// 문자열로 변환 String toString(int radi..