목록분류 전체보기 (15)
Jun's Ark
# I/O 입출력 : 입출력(I/O)이란 Input과 Output의 약자로 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것 # Stream : 단방향 통신만 가능한 통로 (람다의 스트림과 다르다) - FIFO 구조이다 # 바이트 기반 스트림 입력 스트림 출력 스트림 입출력 대상의 종류 FileInputStream FileOutputStream 파일 ByteArrayInputStream ByteArrayOutputStream 메모리(byte배열) PipedInputStream PipedOutputStream 프로세스(프로세스간 통신) AudioInputStream AudioOutputStream 오디오 장치 # 입출력 스트림의 부모 InputStream, OutputStream Input..
# 위치 : 'java.lang.annotation' 에 위치 # 사용 이유 : AOP를 쉽고 편하게 구현하기 위해 - 기존에는 XML에 명시 했는데 서비스 규모가 커짐에 따라 관리 하기가 힘들어 졌고 클래스에 직접 명시하게 되었다. # 정의법 : public @interface SuppressWarnings { } # 문법 : @Override와 같이 @기호를 클래스, 메서드, 매개변수 등 상단에 붙여주기만하면 된다. - Java5부터 등장 @Override public int leeJun(int index){ } @Test void insertData(){ } # 용도 : 문서화, 컴파일러 체크, 코드 분석과 자동 생성, 런타임 프로세싱 용도로 사용될 수 있다. # 분류 - Maker 어노테이션 : ..
# Enum이란? 상수의 집합 public enum Language { C, JAVA, KOTLIN, JAVASCRIPT } # Enum 사용 이유 Enum을 사용하면 가독성을 높이고 오류를 줄일 수 있다. # 특징 - enum에 정의된 상수들은 해당 enum type의 객체이다. - 생성자와 메서드를 추가할 수 있다. # 사용법 필요한 원소를 컴파일 타임에 다 알 수 있는 상수 집합이라면 항상 열거 타입을 사용하자. 태양계 행성, 한 주의 요일, 체스 말처럼 본질적으로 열거 타입인 타입은 당연히 포함된다. 그리고 메뉴 아이템, 연산 코드, 명령줄 플래그 등 허용하는 값 모두를 컴파일타임에 이미 알고 있을 때도 쓸 수 있다. 열거 타입에 정의된 상수 개수가 영원히 고정 불변일 필요는 없다. 열거 타입은 ..
# 프로세스란 하나의 프로그램으로 데이터와 메모리 등의 자원과 쓰레드로 구성 # 쓰레드 프로세스의 자원을 이용해서 실제 작업을 수행하는 역할 # 쓰레드 구현과 실행 1) Thread 클래스 상속 2) Runnable 인터페이스 구현 --> 다른 클래스 상속을 위해 구현이 일반적 결국 run 메서드에 실행할 코드를 적는다. # start() & run() - 쓰레드의 시작은 start()를 호출해야 한다. 그럼 start()가 실행할 스택을 만들고 그 안에 run메서드를 올려주는 역할 - 한번 실행된 쓰래드는 재사용 할 수 없고 다시 생성해야 하며 start()를 두 번 호출 하면 IllegalThreadStateException 발생 # main 쓰레드 - 가장 먼저 실행되는 쓰레드 - 모든 쓰레드는 메..
# 예외란? 자바에서 에러는 1) Error : JVM실행에 문제가 생김 2) Exception : 사용자의 잘못된 조작, 개발자의 코딩의 잘못 Key Error Exception 타입 확인되지 않은 유형으로 분류 Checked와 Unchecked로 분류 패키지 java.lang.error java.lang.Exception 복구 불가능 가능 발생 컴파일에 발생할 수 없음 런타임 & 컴파일 시간에 발생 예 OutOfMemoryError, IOError NullPointerException, SqlException # Exception 종류 - 일반예외(Exception) : 일반 예외와 실행 예외 클래스를 구별하는 방법은 예외 Exception을 상속받지만, RuntimeException은 상속받지 않아..
# 인터페이스 란? 객체와 객체 사이에서 일어나는 상호 작용의 매개로 쓰인다. # 사용 방법 아래와 같이 class 를 interface로 바꿔주면 된다. public interface InterFaces { } # 다른 클래스에서 구현하는 방법 여기서 public abstract는 생략 가능하다. public abstract void hello(); # 인터페이스 상속 extends로 상속을 키시면 새로운 규약을 추가한다는 의미 # 직접 구현하기 default, static, private , 익명클래스, 구현체로 만들기 등이 있다.
# 패키지란? - 패키지란 여러분이 만든 클래스나 인터페이스 등을 모은 단위 - 파일 시스템 즉 윈도우 폴더와 비슷한 역할을 함 - 패키지 이름 + 클래스 이름 --> FQCN(Fully Qualified Class Name) 이라고함 ex) 아래와 같은 클래스가 있다면 FQCN은 dev.livestudy.week7.SampleClass package dev.livestudy.week7; class SampleClass { // code... } # import - 다른 패키지에 있는 클래스나 인터페이스 등을 참조할 때 사용 - 정적(static) 멤버도 임포트 가능 # 클래스패스(Classpath) - 클래스패스는 JVM혹은 Java컴파일러가 사용하는 파라미터인데 클래스나 패키지를 찾을 때 기준이 되는..
상속이란? 상속이란 상위클래스에서 정의한 필드와 메서드를 하위클래스도 동일하게 사용할 수 있게 물려받은 것이다. 즉, 변수화 로직을 복사한 것이다. 상속을 사용하는 이유 코드를 재사용하기에 편하고 클래스 간 계층구조를 분류하고 관리하기 쉬워진다. - 다중상속 금지 - 최상위 클래스 Object SUPER super키워드를 사용하면 서브클래스가 수퍼클래스에 접근이 가능하다. super는 수퍼클래스의 참조변수라고 볼 수 있다. - super() : super()를 사용하면 수퍼클래스의 생성자를 호출할 수 있다. 메소드 오버라이딩 수퍼클래스가 가지고있는 메서드를 서브클래스에서 새롭게 다른 로직으로 정의하고 싶을 때 사용하는 문법 - 상속관계에 있는 클래스간에 같은 이름의 메서드를 정의하는 문법을 오버라이딩이라..
클래스 란? 객체들의 협력 관계를 코드로 옮기는 도구 협력에 참여하여 메시지를 주고 받는 객체를 만드는데 필요한 구현 매커니즘 클래스 작성 규칙 하나 이상의 문자로 이루어져야 한다.. 첫 번째 글자에는 숫자가 올 수 없다. $,_ 외에는 특수문자 사용불가 ($port (o), c@r(x)) 자바 명령어, 키워드는 사용할 수 없다.(while, for, int 등 사용불가) 이름은 대소문자를 구분한다.(보통, 첫번째 글자는 대문자로 작성) 클래스 작성 규칙 하나 이상의 문자로 이루어져야 한다.. 첫 번째 글자에는 숫자가 올 수 없다. $,_ 외에는 특수문자 사용불가 ($port (o), c@r(x)) 자바 명령어, 키워드는 사용할 수 없다.(while, for, int 등 사용불가) 이름은 대소문자를 구분..
선택문(Decision-making Statement) 조건식의 결과에 의해 실행 될 코드가 달라질 수 있는 구문을 말한다. # if-then if-then 문은 가장 기본적인 제어문중 하나로 지정한 조건이 만족할 시에 지정한 블록({}) 안에 있는 코드가 실행된다. if(조건식) { // 한 줄일 경우 {} 생략 가능 조건이 참일 경우 실행되는 코드; } 만약 if-then문 안에 코드가 한 줄이라면 {}은 생략이 가능하다. # if-then-else 기본적인 if-then 문에서는 참일 경우만 실행이 됬다면, if-then-else 문은 거짓일 때도 실행할 수 있다. 즉, 조건식이 참일 경우와 거짓일 경우의 실행되는 코드들을 나눌 수 있다는 것이다. if(조건식) { 참일 경우; } else { 거짓..