본문 바로가기
Java 기본 6 - 추상클래스 기본개념 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 하는데 이 클래스들의 공통 특성을 뽑아 선언한 클래스를 추상 클래스라고 한다. 추상 클래스와 실체 클래스는 상속의 관계다. 추상 메소드를 선언하여 상속을 통해 자식 클래스가 완성하도록 하는 클래스다. '미완성 설계도' 추상 클래스는 객체를 직접 생성해서 사용할 수 없다. (즉, new 연산자를 사용해 인스턴스를 생성할 수 없다.) 용도 1. 실체 클래스의 공통된 필드와 메소드의 이름을 통일 2. 실체 클래스를 작성할 때 시간을 절약 선언 추상 클래스와 추상 메소드 모두 'abstract' 키워드를 사용하고, 추상 메소드는 실행 내용이 담긴 {}(중괄호)부분이 생략된다. 추상 메소드와 오버라이딩 실체 클래스들의 메소드 선언만 통일하고, 실행 내.. 2021. 5. 24.
Java 기본 5 - Enum enum을 사용하는 이유 1. 상수에 의미를 부여하기 위해 2. 코드작성자의 의도를 벗어나는 상황을 줄이기 위해 (상수에 의미를 부여하면서 전달할 수 있는 인자를 제한할 수 있다.) 3. 코드 유지, 보수를 쉽게 하기 위해 4. 타입 안정성 보장 5. 코드 가독성 높다 6. enum 특성상 Singleton패턴으로 사용하기 때문에 생성자는 기본적으로 private으로 외부에서 직접 생성자를 호출하지 못하게 한다. (Singleton에 대한 설명은 Java 기본 7 - Singleton패턴 참고) Java 기본 7 - Singleton패턴 Singleton패턴이란? - 인스턴스를 '한 번'만 생성하고, 이를 여러 군데에서 공유하면서 사용하도록 하는 디자인 패턴 생성자를 private으로 설정하여 new키워.. 2021. 5. 23.
연산자 단항 연산자 부호 연산자(+,-)의 결과값은 int형이다. 증감 연산자(++, --) 연산식에서 증감 연산자만 있으면 변수 앞, 뒤 어디에 있든 같다. ++i; i++; //둘 다, i=i+1;로 같다 다른 연산자와 함께 있으면 앞이냐 뒤냐에 따라 결과값이 달라진다. ++i;가 i=i+1;보다 연산속도가 빠르다고 알고 있지만, 컴파일된 바이트 코드를 보면 동일하게 생성되기 때문에 차이가 있다고 볼 수 없다. 비트 반전 연산자(~) 결과값은 int형이다. 부호가 반대인 새로운 값이 나온다. 이항연산자 산술 연산자(+, -, *, /, %) long을 제외한 정수형 연산은 int형으로 산출되고, 하나라도 실수형이면 실수형으로 결과가 나온다. 따라서 나누기를 할 때에도 주의를 해야한다. int i1 = 10;.. 2021. 5. 20.
자료형 변수는 값을 저장할 수 있는 메모리 공간을 의미한다. 변수를 선언한다는 것은 값을 저장할 메모리 공간을 잡아둔 것을 의미한다. 상수 또한 같은 의미를 가진다. 하지만 변수와 다른 점은 상수는 한 번 값이 저장되면 그 뒤로 바꿀 수 없다. 변수에 값을 저장할 때 대입 연산자(= 등)를 사용 로컬 변수는 메소드 실행이 끝나면 메모리에서 자동으로 없어진다. 즉, 변수는 선언된 블록 내에서만 사용이 가능하다. char형 - 2byte의 크기, 문자 직접, 10진수, 16진수 등등 다양하게 저장 가능 char c = ''; //compile 에러 -> char c= ' '; int형 - 자바에서는 byte나 short 타입의 변수를 연산하면 int로 변환 후 연산하고, 결과 역시 int이다. 자바에서 정수 연산을.. 2021. 5. 20.
JVM Java Virtual Machine으로, 자바 컴파일러가 자바 소스코드를 컴파일한 자바 바이트코드를 각 OS에 맞게 이해할 수 있도록 기계어로 변환해주는 역할을 한다. 운영체제 위에서 작동하는 응용프로그램이다. C와 같은 언어는 운영체제 바로 위에서 직접 실행되지만, Java는 JVM이 운영체제 위에서 작동하고 있고, 그 JVM 위에서 Java가 돌아간다. 즉, Java와 OS 사이 중개자 역할이라 보면 된다. JVM 구조 1. Java를 실행하면 일단 JVM은 OS로부터 메모리를 할당 받는다. JVM은 이를 적절히 잘 분배하면서 관리한다. 2. 작성한 자바 소스코드.java를 자바 컴파일러가 자바 바이트코드.class로 컴파일 한다. 3. 그러면 Class Loader는, 이런 식으로 생성된 .cla.. 2021. 5. 18.
Java 기본 1 개발자가 작성한 소스코드(.java파일)를 JDK(Java Development Kit)에 있는 자바 컴파일러(javac.exe)가 바이트코드(.class)로 변환한다. 이 변환된 코드를 JRE(Java Runtime Environment)에 포함된 JVM(Java Virtual Machine)이 기계어로 변환하여 실행한다. Binary code vs 기계어 vs Byte code Binary code - 컴퓨터가 이해할 수 있도록 0과 1로 이루어진 코드(이진코드) 기계어 - 컴퓨터의 CPU가 이해할 수 있는 언어 - 컴파일러에 의해 컴파일된 코드는 binary code의 형태인 기계어다. - 같은 명령을 수행하더라도 CPU 종류에 따라 기계어는 다를 수 있다. Byte code - Java에서 JVM.. 2021. 5. 17.