목록Language/Java (58)
한 걸음 두 걸음
어노테이션 @를 이용하여 작성한 코드에 부가 설명을 하는 것으로, 주석과 비슷한 역할입니다. 가장 흔히 볼 수 있는 어노테이션은 @Override가 있습니다. 이는 메소드에 쓰이며, 재정의된 함수라는 것을 표시합니다. 이를 사용하면 가독성이 높아지고 소스코드가 보다 명확해집니다. 어노테이션 사용 이유 주석이 있는데 어노테이션을 사용하는 이유는, 주석은 사람을 위한 설명이지만 어노테이션은 사람 뿐만 아니라 컴파일러에게 정보를 제공하는 것이기 때문입니다. 어노테이션 정보를 바탕으로 컴파일러는 코드에 오류가 있는지 확인합니다. 그리고 바이트코드로 변경 시 어노테이션 정보를 포함합니다. 어노테이션 종류 @SuppressWarning컴파일러의 경고를 무시하라고 개발자에게 알려주는 어노테이션 어노테이션 사용을 더 ..
리플렉션이란? 자바는 객체지향 언어이기 때문에 클래스로 이루어져 있습니다. 이 때, 자기자신의 객체 내부의 field(클래스 변수), method(클래스 함수), constructor(클래스 생성자) 정보를 알수 있도록 제공하는 것이 리플렉션입니다. Class class 클래스 클래스는 클래스 내부 정보를 알 수 있도록 리플렉션을 이용해서 도와줍니다. 예) getClass()를 사용해서 실제 객체의 타입을 알 수 있습니다.
스트림이란? JAVA8부터 업데이트 되었습니다. 람다식을 활용하여 element를 처리할 수 있는 반복자입니다. 입출력 스트림과 다른 스트림을 설명합니다 스트림방식 String[] words = ~; int count = words.stream() .filter(w -> w.length() > 10 ) .count(); 병렬처리 스트림 String[] words = ~; int count = words.parallelStream() .filter(w -> w.length() > 10 ) .count(); 파이프라인에 따라 중간연산(filter등)이 모두 연결되어 스트림이 되고(중간연산을 지날 때마다 스트림이 변화합니다.) 이는 최종연산(count)로 전달되어 한번에 처리됩니다. 스트림 특징 컬렉션과 스트..
프로세스와 스레드 운영체제를 공부하신 분들은 다 아시겠지만, 컴퓨터 업무 처리의 단위는 프로세스와 스레드가 있습니다. 프로세스는 실행중인 프로그램 작업단위로 독자적으로 자신만의 데이터와 프로세스ID 등을 갖고 실행됩니다. 이는 프로그램으로도 불리지만, 사실 하나의 프로그램은 여러 개의 프로세스를 가질 수도 있습니다.(예, 카카오톡 프로그램은 메세지송수신과 프로필뮤직 플레이를 동시에 제공합니다.) 이 때, 메세지 송수신과 뮤직 플레이 프로세스가 각각 있으며 두 사이의 메모리는 분리되어있습니다. 스레드는 프로세스 안에 한 개 이상 존재합니다. 프로세스 내에서 스레드들은 모두 프로세스의 자원을 공유하며 효율적으로 통신합니다. 자바로 만든 프로그램은 반드시 한 개 이상의 스레드를 갖습니다. 최초로 만들어진 스레..
Collection을 사용하다보면 데이터 접근하기 위해 반복자를 사용하게 됩니다. Iterator인터페이스 java.util의 Iterator인터페이스엔 hasNext(), next(), remove() 추상메소드가 정의되어 있는데 hasNext()는 아직 검사하지 않은 원소가 남아있으면 true를 반환합니다. next()는 다음 원소로 이동하여 해당 원소를 반환합니다. remove()는 최근에 반환한 마지막 원소를 삭제합니다, default void forEachRemaining(Consumer
제네릭 클래스란? ArrayList가 있다면, 이는 String만 적용시킬 수 있는 것이 아니라, 여러 타입(String, 객체, Integer 등)을 적용시켜 재사용할 수 있도록 해주는 것입니다. 단, 기본타입(int, char, double 등의 Primitive data type은 지원하지 않습니다.) 이 때 타입을 나타내는 매개변수는 로 표기해야 합니다. , 타입매개변수 ArrayList //T타입을 element로 가지는 ArrayList클래스, 다양한 타입에서도 동작하는 함수와 클래스 작성에 용이하게 쓰입니다. class ClassName{ private K key; private V value; public ClassName(K k, V v){ key = k; value = v; } publ..
예외처리란? 메소드가 해야 할 일을 수행할 수 없는 상황을 처리하는 것. 예외란, 복구가 가능한 에러를 지칭합니다. (HW전원이 나가는 등의 에러는 복구가 불가능한 에러입니다.(버그)) 자바에서는 예외가 발생했을 경우 이를 처리하는 과정을 분리하여 사용하는 방식을 씁니다. 자바는 에러도 클래스로 구현되어 있습니다. 메소드 안에서 오류가 발생하면 해당 오류를 설명하는 예외 객체를 만들어 런타임 시스템으로 넘깁니다. 예외 계층구조 / checked Exception Object-Throwable(예외 최상위 클래스)는 Error와 Exception 자식 클래스를 가집니다. Error는 복구할 수 없으므로(IOError) Exception 처리를 하는 방법을 공부해보겠습니다.(단, RuntimeExceptio..
내부클래스란? 하나의 클래스 안에 다른 클래스를 정의한 클래스입니다. public class A{ //외부클래스 private class InnerA{ //내부클래스, 어디에 작성해도 상관 없습니다. //내부클래스에서 외부클래스의 함수나 변수에 자유롭게 접근합니다. } //외부클래스에서는 내부클래스의 객체를 만들어 사용합니다. }내부 클래스는 외부 클래스의 멤버나 함수에 자유롭게 접근 가능하며, 대부분 private로 해당 외부 클래스 내에서만 사용하는 편입니다. 때문에 내부 클래스의 객체는 외부클래스에서 만들어져 사용됩니다. 사용이유 그래픽 이벤트 처리에 유용하다. 항상 함께 사용되는 두 클래스가 있다면, 같이 놔두는 것이 사용하는데 더 효율적이다. 무명클래스란? 클래스 이름이 없는 클래스로, 바디만 ..