자바 47

[도서/자바의 신] #17 어노테이션이라는 것도 알아야 한다

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 어노테이션이란? 어노테이션(Annotation)은 클래스나 메소드, 변수 등의 선언시에 @를 사용하는 것으로 컴파일러에게 정보를 알려주거나 컴파일할 때와 설치(deployment)시의 작업을 지정하거나 실행할 때 별도의 처리가 필요할 때 사용한다. 프로그램에 영향이 있는 어노테이션도 있고 없는 것도 있다. 미리 정해져 있는 어노테이션들은 딱 3개뿐 사용하기 위해 정해진 어노테이션은 3개가 있다. @Override : 해당 메소드가 부모 클래스에 있는 메소드를 Override했다는 것을 명시적으로 선언해줌 @Deprecated : 클래스나 메소드가 더이상 사용되지 않는 경우에 써줌. deprecated된 메소드를 써도 경고만 주고..

[도서/자바의 신] #16 클래스 안에 클래스가 들어갈 수도 있구나

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 클래스 안의 클래스 코드를 간단하게 하기 위해 클래스 안에 클래스가 들어가 있는 클래스를 Nested 클래스라고 한다. Nested 클래스는 자바 기반의 UI 처리를 할때 사용자의 입력이나 , 외부의 이벤트에 대한 처리를 하는 곳에서 가장 많이 사용된다. Nested 클래스는 선언 방법에 따라 두가지로 나뉜다. Static nested 클래스 : static이 붙은 nested 클래스 내부(inner) 클래스 : static이 안붙은 nested 클래스 로컬 내부 클래스(local inner class) : 이름이 있는 내부 클래스 익명 내부 클래스(anonymous inner class) : 이름이 없는 내부 클래스 간단하게 ..

[도서/자바의 신] #15 String

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 자바에서 가장 많이 사용하는 String 클래스 객체에 더하기를 하면 toString() 메소드가 호출되고 그 결과가 더해지는 것이라 결론적으로는 String을 더하는 것이다. 자바에서 많이 쓰이는 String 클래스에 대해 알아보자. public final class String extends Object implements Serializable, Comparable, CharSequence public final로 선언되어 있어 누구나 사용할 수 있지만 확장할 수 없는 클래스이다. implements 뒤에 오는 인터페이스들을 구현해 놓은 것이 String 클래스이다. Serializable 인터페이스는 구현해야 하는 메소드..

[공부/Java] JVM, JRE, JDK

자바 가상 머신 (JVM, Java Virtual Machine) 각기 다른 플랫폼에 설치해 동일한 자바 실행 환경을 만들어주는 소프트웨어 Java는 JVM 덕분에 플랫폼에 종속적이지 않지만, JVM 자체는 플랫폼에 종속적이라 운영체제에 맞는 JVM을 설치해줘야 함 응용 프로그램을 구성하는 클래스 파일(.class)의 바이트 코드를 JVM 환경에서 실행 JVM은 자바 실행 환경인 JRE에 포함되어 있어 현재 사용하는 컴퓨터 운영체제에 맞는 자바 JRE가 설치되어 있다면 자바 가상 머신이 설치되어 있다는 의미 JVM을 사용함으로써 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작할 수 있다는 것이 가장 큰 장점이다! JVM 동작 방식 1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리..

공부/Java 2022.12.24

[공부/Java] JVM 구성 - Class Loader, Execution Engine, Garbage Collector

JVM의 구성요소 Class Loader Class Loader는 바이트코드(.class)를 읽어들여서 클래스 객체를 생성하는 역할을 담당한다. class 로딩은 Run-Time에 일어난다. 개발자가 new라는 예약어로 객체를 생성하는 코드를 처음 실행할 때 JVM은 만들 클래스를 Class Loader로 .class 파일을 최초로 메모리에 load한다. 최종적으로 Runtime Data Area의 Method Aread에 배치된다. Class Loader의 기술적 특징 Hierarchical : Class Loader 간에 계층형 구조를 가짐. 'bootstrap' Class Loader가 가장 최상위 Delegate load reqeust : 계층형 구조를 가지고 있어 어느 시점에 Class 로딩요청..

공부/Java 2022.12.24

[도서/자바의 신] #13 인터페이스와 추상클래스, enum

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 메소드 내용이 없는 interface 시스템 "방법론" 순서 분석 : 시스템 제작을 요청한 사람들(SI에서는 고객, SM에서는 현업, 별도의 고객이 없는 회사는 기획이 업무를 수행)의 요구사항을 분석 설계 : 분석 단계에서 만든 대략적인 기획을 프로그램으로 만들 수 있도록 설계 개발 및 테스트 : 설계에서 만든 것을 개발하는 단계, 기능들이 제대로 동작하는지 테스트하는 작업도 수행 시스템 릴리즈 : 시스템을 사용자에게 제공, 오픈 이후에는 운영/유지보수 단계를 거치면서 문제있는 부분을 수정해 나감 이 절차는 아주 일반적인 절차로 모든 개발 절차가 이렇진 않다. 인터페이스와 abstract가 필요한 이유? 설계 시 선언해 두면 개..

[도서/자바의 신] #12 모든 클래스의 부모 클래스는 Object에요

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 모든 자바 클래스의 부모인 java.lang.Object 클래스 자바에서 아무런 상속을 받지 않으면 java.lang.Object 클래스(이하 Object 클래스)를 확장한다. 상속을 받아도 부모 클래스로 계속 올라가보면 결국엔 Object 클래스가 최상위 부모 클래스임을 알 수 있다. 그렇기 때문에 모든 클래스에서 Object 클래스에 정의된 기본적인 메소드들을 사용할 수 있다. 터미널에서 javap라는 명령어를 통해 하나 이상의 class의 package, protected, public 변수와 메소드에 대한 정보를 출력해준다. 명령어 뒤에는 여러 옵션들이 올 수 있고 출력할 정보를 바꿔준다. Object 클래스에서 제공하는..

[도서/자바의 신] #11 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 미리 만들어 놓은 클래스들은 아주 많아요 JDK에 포함된 이미 만들어 놓은 여러 클래스들을 사용할 때 참조하는 문서를 API(Application Programming Interface)라고 한다. 자바의 API는 HTML로 구성되어 있어 인터넷 브라우저에서 문서를 읽어 볼 수 있다. JDK에 포함되어 있는 문서와 다른 여러 자바 관련 프레임웍에서 제공하는 문서도 API라고 부른다. 개발시에 소스 내에 클래스 및 메소드를 선언하기 전이나 후에 API에 명시되도록 하기 위한 주석을 상세히 달아주고 java/bin디렉터리에 있는 javadoc이라는 명령어를 통해 API 문서를 생성할 수 있다. API를 열어보자 docs에 API들이..

[도서/자바의 신] #10 자바는 상속이라는 것이 있어요

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 자바에서 상속(inheritance)이란? 클래스를 선언할 때 클래스 이름 뒤에 extends라는 예약어를 쓰고 그 다음에 상속받을 클래스를 써주면 해당 클래스가 상속된다. 상속이라는 건 부모와 자식 관계로 나타낼 수 있는데, 자식이 부모에 public과 proctected로 선언된 변수와 메소드를 본인이 가지고 있는 것처럼 사용할 수 있다. 자식 클래스 객체를 생성하면 자동으로 부모의 기본 생성자(매개변수가 없는 생성자)가 호출된다. 확장한 클래스(자식 클래스)에는 추가적인 메소드를 만들어도 문제가 없다. 상속은 코드의 간결화와 재사용성을 좋게 해주는 장점이 있다. 자바는 extends 뒤에 하나의 클래스만 올 수 있다. 즉,..

[도서/자바의 신] #9 자바를 배우려면 패키지와 접근 제어자는 꼭 알아야 해요

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 패캐지는 그냥 폴더의 개념이 아니에요 패키지(package)는 클래스들을 구분짓는 폴더와 비슷한 개념이다. 자바 파일을 컴파일 할 때 슬래스로 각 패키지를 구분한 후 자바 소스 이름을 지정하여 컴파일이 가능하다. 그리고 항상 컴파일할 때는 가장 상위 디렉터리, 즉 root 디렉터리에서 실행을 해야만 한다. 패키지 선언문 package 상위 패키지.하위 패키지; 소스의 가장 첫 줄에 위치해야 한다. 패키지 선언은 소스 하나에는 하나만 있어야 한다. 패키지 이름과 위치한 폴더 이름이 같아야 한다. 패키지 이름을 java로 시작해서는 안된다. 패키지 이름은 이렇게 지어요 기본 규칙 패키지 시작 이름 내용 java 자바 기본 패키지(J..

728x90