학습한 내용을 정리한 포스팅입니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다 🙇🏻♀️ 스트림 스트림(stream)은 데이터의 연속적인 흐름 또는 데이터의 시퀀스라고 정의할 수 있다. 스트림은 Input/Output을 다루는 확실한 방법으로 스트림은 아래처럼 두 가지 타입이 있다. https://media.geeksforgeeks.org/wp-content/uploads/20210119084545/Stream.png 그렇다면 Byte Stream이란? Byte Stream은 byte의 input/output을 쉽게 처리할 수 있도록 해준다. Byte Stream은 InputStream과 OutputStream으로 나뉜다. InputStream과 OutputStream (InputStream과 OutputStr
학습한 내용을 정리한 포스팅입니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다.🙇🏻♀️ 애노테이션 정의하는 방법 @만 붙일 뿐 인터페이스 정의하는 방법과 같다. 클래스 레벨 어노테이션 예제 @interface 키워드를 사용해 선언할 수 있다. 이후에 스코프와 타겟을 특정화하기 위해서 메타 어노테이션을 추가한다. 필드 레벨 어노테이션 예제 어노테이션은 메소드를 가질 수 있는데 이 때 이 메소드들을 요소(Element)라고 한다. 이 요소들은 아래의 규칙을 따라야 한다. 요소의 타입은 Primitives, String, Class, Enum, 어노테이션만 허용된다. 매개변수를 선언할 수 없다. 예외를 던질 수 없다. 요소를 타입 매개변수로 정의할 수 없다. 메소드
학습한 내용을 정리한 포스팅입니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다.🙇🏻♀️ Enum? 상수를 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. 값뿐만 아니라 타입도 체크하기 때문에 안전하다고 볼 수 있다(타입에 안전한 열거형 - typesafe enum) enum 정의하는 방법 아래와 같이 정의하면 된다. 위처럼 PizzaStatus를 정의했다. 사용할 때는 ‘이름.상수명’으로 사용할 수 있다. (PizzaStatus.ORDERED 등) 커스텀 Enum 메소드, ==와 Eqauls() > 아래의 예시는 baeldung에 나와있는 예시를 보고 이해한 대로 다시 써보았습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다 위의 예시처럼 enum을 활용하는 메서드를 정의할 수도 있다. 여기에서 눈여겨 봐야하는 점은 isDel
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다.🙇🏻♀️ Thread 클래스와 Runnable 인터페이스 쓰레드를 만들기 위해서는 Thread 클래스를 Extends 하거나 Runnable 인터페이스를 implements 한다. 일반적으로는 후자를 더 많이 사용한다. 후자가 객체지향 관점(재사용성, 코드의 일관성 유지 가능)에 부합하기 때문이다. 예시 1. Thread 클래스를 상속 Runnable 인터페이스를 구현 쓰레드의 상태 아래와 같이 쓰레드의 상태를 6가지로 나눠 볼 수 있다. 현재 쓰레드의 상태를 확인하고 싶다면 Thread.getState()메소드를 사용하면 된다. > A thread state. A thread can be in one of the following states: > > - [NEW]A thread
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다.🙇🏻♀️ Exception과 Error의 차이는? 에러와 예외는 다르다. 에러: 치명적이다 (발생하면 복구할 수 없다), 메모리 부족이나 스택 오버 플로우 등이 있다. 예외: 발생해도 수습할 수 있다. 예외에는 컴파일시 발생하는 컴파일 에러, 실행 시에 발생하는 런타임 에러 그리고 실행은 되지만 의도와 다르게 동작하는 논리적 에러가 있다. 자바가 제공하는 예외 계층 구조 자바의 예외는 크게 두가지로 나뉘는데 Exception 클래스와 그 자손들 RuntimeException 클래스와 그 자손들 RuntimeE
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다.🙇🏻♀️ 인터페이스 정의하는 방법 인터페이스는 추상메서드와 상수만 멤버로 가질 수 있다. 모든 메서드는 public abstract여야 하고 모든 멤버 변수는 public static final 이어야 한다. 그리고 이 둘은 생략이 가능하다. (static 메서드와 디폴트 메서드는 예외) 인터페이스 구현하는 방법 인터페이스는 그 자체로는 인스턴스를 생성 할 수 없다 그렇기에 인터페이스를 구현할 클래스가 필요하다. 아래와 같이 인터페이스를 구현 할 수 있다. 만일 구현하는 인터페이스의 메서드 중 일부만 구현하면 해당 클래스는 abstract를 붙여서 추상 클래스로 만들어줘야 한다. 또한 메서드를 오버라이딩 할 때 조상의 메서드보다 넓은 범위의 접근제어자를 지정해야하는 것이 인터페이스 구현에도 적용된다. 아
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다. package 키워드 클래스의 묶음을 패키지라고 한다. 패키지에는 클래스 또는 인터페이스를 포함 시킬 수 있고 관련된 클래스들끼리 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼 패키지도 다른 패키지를 포함 할 수 있고 ‘점(.)’으로 구분한다. 예를 들어 java.lang 패키지에서 lang 패키지는 java의 하위 패키지이다. 패키지의 선언은 클래스나 인터페이스의 소스 파일 맨 위에 아래와 같이 적으면 된다. 단, 패키지는 하나의 소스파일에 단 한번만 선언될 수 있다. 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다. 소스파일을 작성
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다. 🙇🏻♀️ 자바 상속의 특징 기존의 클래스를 재사용해 새로운 클래스를 작성하는 것을 상속이라고 한다. 상속을 사용하면 공통된 코드들을 관리할 수 있기 때문에 코드의 추가, 변경에 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여한다 자바에서는 extends 키워드로 상속을 할 수 있다. 예시 위의 예시에서 상속해 주는 클래스인 Parent는 부모 클래스, 상속을 받는 Child 클래스는 자손 클래스라고 한다. Parent 클래스가 갖고 있는 age라는 멤버변수는 자손 클래스가 상속 받으면서 자동으로 age라는 멤버변수를 가지게 된다. 하지만 반대로 Child 클래스가 speak()라는 메서드를 갖고 있다고해서 부모클래스인 Parent에게 영향이 가지는
학습한 내용을 정리한 포스팅입니다. 참고 문헌 내용이 직역 되어 어색한 문장이 있을 수 있습니다. 틀린 내용이 있다면 지적해주시면 감사하겠습니다. 🙇🏻♀️ 클래스 정의하는 방법 아래의 예제가 클래스 정의다. 중괄호 사이의 공간이 클래스 바디이고 클래스 바디는 클래스로부터 생성되는 객체의 라이프 사이클 동안 포함될 모든 코드를 담는다. 객체 만드는 방법 (new 키워드 이해하기) Declaration: 위의 코드에서 '=' 기호 기준 왼쪽 부분이 변수 선언들이다. Instantiation: new 키워드는 객체를 만드는 자바 오퍼레이터이다. Initialization: new 오퍼레이터는 새로운 객체를 초기화 시키는 생성자가 호출되는 것을 따르게 된다. Declaring a Variable to Refer to an Object Point originOne;이라고만 한다면 객체를 실
학습한 내용을 정리한 포스팅입니다. 틀린 부분이 있다면 언제든 지적 해주시면 감사하겠습니다. 🙇🏻♀️ 제어문 조건에 따라 문장을 건너 뛰고 때로는 같은 문장을 반복해서 수행해야 할 때가 있다. 이처럼 프로그램의 흐름을 바꾸는 역할을 하는 문장들을 제어문 이라고 한다. 제어문에는 조건문과 반복문이 있는데 조건문은 조건에 따라 다른 문장이 수행되게 하고 반복문은 특정 문장들을 반복해서 수행한다. 선택문 (조건문) if if 조건식이 참이라면 괄호 안의 문장들을 수행하게 된다. if-else if문에 else블럭이 추가 되었다. if 조건식이 참이 아닐 때 else 블럭의 문장들을 수행하게 된다. if-else if 처리해야 할 경우의 수가 셋 이상인 경우에 사용 switch 하나의 조건식으로 많은 경우의 수를 처리할 때 사용. 조건식을 먼저 계산한 다음 결과와 일치하는 case문으로 이동. break문을 만나면 전체 swit
학습한 내용을 정리한 포스팅입니다. 직역된 부분이 있어 어색할 수 있습니다. 틀린 부분이 있다면 언제든 지적 해주시면 감사하겠습니다. 🙇🏻♀️ 자바 연산자 (JAVA Operator) 자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자를 제공한다. 산술 연산자 (arithmetic operator) 사칙연산을 다루는 연산자 산술 연산자는 프리미티브 숫자 타입일 때 사용할 수 있다. |산술 연산자|설명| |--|--| |+| 왼쪽의 피연산자에 오른쪽의 피연산자를 더함| |-| 왼쪽의 피연산자에 오른쪽의 피연산자를 뺌| |*| 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함| |/| 왼쪽의 피연산자에 오른쪽의 피연산자를 나눔| |%| 왼쪽의 피연산자에 오른쪽의 피연자로 나눈 후 그 나머지를 반환| 비트 연산자 (bitwise operator) 논리 연산자와 비슷하지만 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산
학습한 내용을 정리한 포스팅입니다. 직역된 부분이 있어 어색할 수 있습니다. 틀린 부분이 있다면 언제든 지적 해주시면 감사하겠습니다. 🙇🏻♀️ Primitive Type & Reference Type > 간단요약: The basic difference is that primitive variables store the actual values, whereas reference variables store the addresses of the objects they refer to. 프리미티브 타입에는 앞에서 본 것 처럼 boolean, byte, char, short, int, long, float, double이 있다. 이 외 타입은 모두 레퍼런스 타입이다. 프리미티브 타입 변수는 선언될 때 하나의 밸류만 저장되고 디폴트 값으로 초기화 된다. 레퍼런스 타입은 컴퓨터 메모리 안의 객체의 위치를 저장한다. Primitive Type 종류와
학습한 내용을 정리한 포스팅입니다. 직역된 부분이 있어 어색할 수 있습니다. 틀린 부분이 있다면 언제든 지적 해주시면 감사하겠습니다. 🙇🏻♀️ JVM이란 무엇인가 Java Virtual Machine 이름 그대로 해석한다면 자바 가상 머신. 자바는 WORA(Write Once Run Anywhere)라는 컨셉을 가지고 가상 머신 위에서 실행되게끔 개발 되었다. 현실에서 소프트웨어가 운영체제를 통해 컴퓨터 하드웨어 상에서 구동 되듯이 자바 개발 도구인 JDK를 이용해 개발된 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM에서 구동된다. (컴파일된 바이트 코드는 JRE에 의해서 실행되고 JRE는 JVM에서 구동.) 위의 그림과 같이 JVM은 세 파트로 나뉘게 된다.