본문 바로가기

Java48

JAVA Thread와 Runnable 의 차이 Thread와 Runnable은 Java에서 멀티스레드를 구현하기 위해 사용되는 클래스오 인터페이스이다. Thread는 클래스로 구현되어 있고 Runnable은 인터페이스로 구현되어 있다. Thread와 Runnable의 차이점과 특징을 알아보자. Runnable 인터페이스를 구현하는 방법은 재사용성이 높고 코드의 일관성을 유지 할수 있다는 장점이 있기 때문에 보다 객체지향적인 방법이라 할수 있다. Runnable은 익명 객체 및 람다로 사용할 수 있지만, Thread는 별도의 클래스를 만들어야 한다는 점에서 번거롭다. 또한 Java에서는 다중 상속이 불가능하므로 Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없어 좋지 않다. 그리고 Thread 클래스를 상속받으면 Thread 클래스에 구현.. 2023. 5. 11.
JAVA Thread Java의 Thread란 하나의 프로세스 내에서 독립적으로 실행되는 작업 단위를 말한다. 자바에서는 프로세스가 존재하지 않고, 스레드만 존재하는데 이 자바 스레드는 JVM에 의해 스케쥴되는 실행 단위 코드 블록이다. 스레드를 사용하는 이유는 여러 가지가 있다. 가장 큰 이유는 멀티태스킹을 구현하기 위해서이다. 멀티태스킹은 하나의 시스템에서 여러 개의 작업을 동시에 처리하는 것을 말한다. 하지만 여러 개의 프로세스를 생성하는 것은 시스템 자원을 많이 소비하게 되므로, 스레드를 이용하여 작업을 분리하고, 동시에 처리할 수 있도록 한다. 자바에서 스레드를 구현하는 방법은 두 가지가 있다. 첫 번째는 Thread 클래스를 상속하는 방법이고, 두 번째는 Runnable 인터페이스를 구현하는 방법이다. Thread.. 2023. 5. 11.
JAVA Exception Java에서의 예외(Exception)란 사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 말한다. 일반 예외(Checked Exception)와 실행 예외(Unchecked Exception)가 있다. 일반예외는 개발자가 예외 처리를 반드시 해야 하고 실행 예외는 개발자가 예외 처리를 직접 하지 않아도 된다. 명시적인 예외 처리가 강제되는 것이 아니므로 unchecked 라고 부른다. 예외 처리를 할 때, try-catch 블록으로 예외 처리 하는 것이 기본이다. 하지만 경우에 따라서는 메소드를 호출 한 곳으로 예외 처리를 떠넘길 수도 있다. 이 때 사용하는 키워드가 throws이다. throws키워드는 메소드 선언부 맨 끝에 작성하며, 메소드에서 try-catch를 통해 처.. 2023. 5. 10.
JAVA List Set Map Java에서 List, Set, Map은 Java Collection Framework에서 데이터를 저장하고 관리하기 위해 제공하는 자료구조로 구분할 수 있다. List 순서가 있고, 중복을 허용하는 자료구조 저장공간이 필요에 따라 자동으로 늘어나는 가변적인 배열 ArrayList, LinkedList 등이 List의 구현체로 사용된다. 예시👉학생들의 성적을 저장하는 List ["John" : 90, "Mike" : 80, "Jane" : 95, "Mike" : 85] Set 순서가 없고, 중복을 허용하지 않는 자료구조 HashSet, TreeSet 등이 Set의 구현체로 사용된다. 예👉학생들의 이름을 저장하는 Set ["John", "Mike", "Jane"] Map Key-Value 형태로 데이터를 .. 2023. 5. 8.
JAVA Collection Java에서의 컬렉션(Collection)은 데이터를 유용하게 담기 위해 만들어 둔 인터페이스로 컬렉션 프레임워크라고도 부른다. 컬렉션은 데이터의 집합, 그룹을 의미하며, 라이브러리 방식으로 작동한다. 컬렉션 프레임워크는 다양한 인터페이스와 클래스를 제공한다. 이를 사용하여 데이터를 쉽게 조작할 수 있다. 컬렉션 프레임워크는 크게 List, Set, Map으로 구분된다. List : 순서가 있는 데이터의 집합이다. 데이터의 중복을 허용하며, ArrayList, LinkedList, Vector 등이 있다. Set : 순서가 없는 데이터의 집합이다. 데이터의 중복을 허용하지 않으며, HashSet, TreeSet 등이 있다. Map : key와 value로 구성된 데이터의 집합.key는 중복이 불가하며, .. 2023. 5. 8.
JAVA HashMap Java 에서 HashMap은 많이 사용되는 자료구조 중 하나로, key - value 쌍으로 데이터를 저장하는 해시테이블 자료구조를 구현한 클래스이다. HashMap은 내부적으로 배열과 링크드 리스트, 그리고 트리를 사용하여 데이터를 저장하며, key를 해시 함수롤 통해 해시값으로 변환한 뒤, 해당 값을 배열의 인덱스로 사용하여 데이터를 저장한다. 또한 해시 함수를 사용하여 빠르게 데이터를 검색한다. HashMap에는 다양한 메소드가 있다. put(key, value)👉 HashMap에 값을 추가하려면 put(key, value)메소드를 사용하면 된다. 선언 시 HashMap에 설정해준 타입과 같은 타입의 key와 Value값을 넣어야 하며 만약 입력되는 키 값이 HashMap 내부에 존재한다면 기존 .. 2023. 5. 8.
JAVA ArrayList ArrayList는 자바에서 제공하는 Collection Framwork의 일종으로, 동적인 크기를 가지는 배열이다. ArrayList는 List 인터페이스를 구현하며, 배열과 리스트의 장점을 모두 가지고 있다. ArrayList는 크기가 가변적이기 때문에, 배열과 달리 요소의 추가, 삭제, 삽입이 용이하다. ArrayList는 인덱스를 사용하여 요소에 접근할 수 있다. ArrayList는 포괄클래스를 사용하여, 타입 안정성을 보장한다. ArrayList의 기본 생성 문법👉 ArrayList arrayList = new ArrayList(); ArrayList 선언시 ArrayList에 타입을 명시해 주는 것이 좋으며, ArrayList에는 참조형 데이터타입만 가능하기 때문에 기본형타입들은 wrapper.. 2023. 5. 4.
JAVA Generic Class Generic Class는 포괄 클래스이다. 자바에서 클래스를 만들 때, 여러 기능을 한 번에 처리하는 클래스를 의미한다. 포괄 클래스를 사용하면 기능을 모듈화하여 코드를 간결하게 만들 수 있다. 예를 들어, 포괄 클래스를 사용하여 파일 입출력, 네트워크 통신, 문자열 처리 등 여러가지 기능을 한 번에 처리할 수 있다. 이렇게 기능을 모듈화하면 코드의 재사용성이 높아지며, 유지보수에도 용이하다. 하지만, 포괄 클래스를 사용할 때 주의 점이 있는데, 포괄 클래스는 여러 가지 기능을 한 번에 처리하기 때문에, 클래스의 크기가 커지고 복잡해질 수 있다. 이로 인해 클래스의 가독성이 떨어지고, 디버깅이 어려워질 수 있다. 따라서 기능이 많은 클래스는 여러 개의 작은 클래스로 분리하여 작성하는 것이 좋다. 자바에.. 2023. 5. 4.
JAVA Interface(작성중) 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 여러 동작들을 다양하게 수행할 수 있다는 장점을 가지게 된다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 이런 다중 상속의 이점을 버릴 수는 없기에 자바는 인터페이스(interface)라는 것을 통해 다중 상속을 지원하고 있다. 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하며, 다른 클래스 사이에 중간 매개 역할까지 담당하는 일종의 추상 클래스이다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함하지만 인터페이스는 오로지 추상 메소드와 상수만 가질 수 있다. 자바에서 인터페이스를.. 2023. 5. 3.