목록Language (49)
devseop08 님의 블로그
함수를 호출하려면 그 함수가 정의된 클래스의 이름과 함수 이름, 파라미터 이름 등을 알아야만 했다.어노테이션과 리플렉션을 사용하면 그런 제약을 벗어나서 미리 알지 못하는 임의의 클래스를 다룰 수 있다.어노테이션을 사용하면 라이브러리가 요구하는 의미를 클래스에 부여할 수 있고리플렉션을 사용하면 실행 시점에 컴파일러 내부 구조를 분석할 수 있다.12.1 어노테이션 선언과 적용어노테이션을 사용하면 선언에 추가적인 메타 데이터(클래스 이름, 함수 이름, 파라미터 이름 등)를 연관시킬 수 있고어노테이션이 설정된 방식에 따라 소스 코드, 컴파일된 클래스 파일, 런타임에 대해 작동하는 도구를 통해 메타 데이터에 접근할 수 있다.12.1.1 어노테이션을 적용해 선언에 표지 남기기코틀린에서 어노테이션을 적용하려면 @와 ..
13.1 변환하는 API자바 언어로 구현된 임의의 그래픽 라이브러리에 Resizable 인터페이스가 있다고 가정해보자Resizable 인터페이스는 getHeight(), getWidth(), setHeight(), setWidth(),setAbsoluteSize() 메서드를 멤버로 갖고 Drawable 인퍼테이스를 상속받는다.public interface Drawable { void draw();}public interface Resizable extends Drawable { int getHeight(); int getWidth(); void setHeight(int height); void setWidth(int width); void setAbsoluteSize(in..
자바 컴파일러의 특징자바는 기본적으로 상위 타입에서 하위 타입으로의 대입을 허용하지 않는 컴파일 규칙이 있다.이는 런타임에 에러가 발생할 여지가 있는 문제 코드를 조기에 발견하여 프로세스가 실행 중에 중단되는 위험을 사전에 차단하기 위한 규칙의 일환이다.public class Generic1 { public static void main(String[] args) { Object a = Integer.valueOf(1); Integer b = a; // error: incompatible types: Object cannot be converted to Integer }}상위 타입에서 하위 타입으로의 대입을 하기 위해선 명시적으로 형변환 연산자를 사용해 ..
열거형 선언 방법static final 상수들을 나열: 양이 증가할 수록 유지와 관리 어려움class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 2; static final int THREE = 3; static final int FOUR = 4; final int kind; final int num;}열거형을 선언: enum 열거형 이름 { 상수명1, 상수명2, 상수명3} 형식으로 선언 enum Kind { CLOVER, ..
DecimalFormat숫자를 문자열로 형식화할 때 사용(숫자 -> 형식 문자열): format 메서드// DecimalFormat.javapublic final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) { if (number instanceof Long || number instanceof Integer || number instanceof Short || number instanceof Byte || number in..
Systempublic final class System { private static native void registerNatives(); static { registerNatives(); } private System() { } public static final InputStream in = null; public static final PrintStream out = null; public static final PrintStream err = null; // Initial values of System.in and System.err, set in initPhase1(). private s..
StringBuffer: mutable(가변) 문자열을 다루는 고전적인 클래스기본 개념패키지: java.lang역할: 문자열을 수정 가능한 형태로 저장하고, 추가/삭제/수정 연산을 지원특징스레드 안전(Thread-safe): 주요 메서드들이 synchronized로 구현되어 있어서 멀티스레드 환경에서도 안전하게 사용 가능불변 객체인 String과 달리 StringBuffer는 객체 내에서 문자열을 수정하므로 String 객체의 + 연산 반복 시 생기는 임시 객체 생성 오버헤드를 피할 수 있다.주요 생성자StringBuffer() // 초기 용량(capacity) 16StringBuffer(int capacity) // 지정 용량으로 생성StringBuffer(String ..
문자열 상수(리터럴)와 String문자열의 본질은 문자 배열이며 문자열은 인코딩 규칙에 영향을 받는다.char[], String문자배열은 겹따옴표를 이용한 리터럴 표기 가능자바 9 이후 char[]에서 byte[]로 변경String 클래스는 불변 클래스이며 논리적 의미로 기본 형식에 속하는 특성을 보인다.덧셈 연산의 결과로 임시 객체가 생기는 문제 발생큰 문자열을 다룰 경우 효율이 더 떨어짐.String 객체 덧셈 연산 시 보이지 않는 임시 객체보이지 않는 임시 객체: 연산 도중에 생성되어 식별자가 별도로 존재하지 않는 익명의 임시 객체클래스가 함수의 반환 자료형인 경우 식별자가 없는 임시 객체가 생성된다.String 타입의 객체를 덧셈 연산 시, 덧셈 연산마다 매번 각각의 보이지 않는 임시 객체를 생성..