Java/Java Study 22

[Thread] Thread 정리 Part 1

1. 프로세스(process)와 스레드(thread) 1. 프로세스 (process) 실행 중인 프로그램으로써 자원과 스레드로 구성 2. 스레드 (Thread) 프로세스 내에서 실제 작업을 수행 , 프로세스는 최소한 하나의 스레드를 가진다. 결국 모든 프로세스는 최소한 하나 이상의 스레드를 가지고 있으며 , 실제로 프로세스의 자원을 가지고 작업을 수행하는 것은 스레드이다. 멀티태스킹과 멀티스레딩 여러 개의 프로세스의 실행 → 멀티태스킹 하나의 프로세스 안에서 여러 개의 스레드의 실행 → 멀티스레딩 하지만 하나의 CPU코어가 한 번에 수행할 수 있는 작업은 하나뿐이고 코어가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행함으로써 여러 작업들이 동시에 수행되어 보이는 것뿐, 따라서 프로세스가 얼마나 많은..

Java/Java Study 2021.08.17

[ 객체지향 ] static

Static , ( Feat. instance ) 인스턴스(instance)필드와 정적(static)필드에 대해서 자바를 공부한 사람이라면 한번은 들어보았을 것이다. 오늘 나는 인스턴스 필드와 정적필드에 관하여 가볍게 알아보려고 한다. 인스턴스(객체)는 힙(heap) 영역에 생성이 된다. 그리고 새로운 객체를 만들면 새로운 힙 영역에 그 객체가 할당, 그 힙영역에 인스턴스멤버들 또한 할당이 된다. class Product { private String productName; private int price; public Product(String productName, int price) { this.productName = productName; this.price = price; } public St..

Java/Java Study 2021.07.08

[Collections Framework] Arrays.sort( ); - (Comparable & Comparator)

● Arrays.sort( ); Array.sort( ) 메서드는 어떻게 알아서 정렬을 하는가? 우리가 무언가를 정렬한다는것은 무작위로 일렬로 세우는것도 정렬이지만, 데이터를 정렬하는것은 정렬 기준이 필요하다. 정렬 (整列) 명사 1 가지런하게 줄지어 늘어섬. 또는 그렇게 늘어서게 함.정렬로 세우다. 명사 2 데이터를 특정한 조건에 따라 일정한 순서가 되도록 다시 배열하는 일. 그 특정한 정렬의 조건이 바로 Comparable과 Comparator 이고 둘 다 정렬기준을 주는 인터페이스이지만, 차이점이 존재한다. 차이점에 앞서서 sort( ) 메서드에 대해서 다시 짚고넘어가자. 우리는 sort( int[] a ) 를 쓸때 정수타입의 배열을 넣으면 sort 메서드가 알아서 정렬해주는걸로 생각했겠지만 사실은..

Java/Java Study 2021.06.03

[Collections Framework] Arrays

● Arrays Arrays는 배열을 다루는 유용한 메서드의 집합이며, 배열을 매개변수로 받아서 우리가 원하는 작업들을 실행시켜준다. Arrays 클래스로 우리가 배열을 다룰 수 있는 작업들이 무엇인지 알아보자. ( asList(); 메서드는 따로 포스팅을 할 예정!) Overloading Arrays의 메서드들은 타입별로 전부 Overloading이 되어있어서, 기본형 뿐만 아니라 참조 형배 열까지 정의되어있다. static String toString(int[] a) static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) static String toString(short[]..

Java/Java Study 2021.06.03

[객체지향] Static 메서드는 언제 쓸까?

● 인스턴스 메서드 인스턴스 생성 후, '참조 변수. 메서드명()'으로 호출 인스턴스 멤버(인스턴스 변수, 인스턴스 메서드)와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수 사용 가능 ● static 메서드 (클래스 메서드) 객체 생성 없이 '클래스 이름. 메서드 이름()'으로 호출 인스턴스 멤버와 관련 없는 작업을 하는 메서드 메서드 내에서 인스턴스 변수 사용불가 인스턴스 메서드는 객체를 생성하여 참조 변수를 이용하여 접근해야 한다. 반면에 클래스 메서드는 별도의 객체 생성 없이 호출이 가능한 메서드이다 자바를 좀 공부한 사람들은 아마도 위의 내용을 다 잘 알고 있을 수도 있다. 그렇다면 혹시 Static을 언제 붙여야 하는지 당신은 아는가? 먼저 인스턴스 메서드는 왜 객체를 선언해야 하는지 ..

Java/Java Study 2021.06.02

[Collections Framework] LinkedList (vs Array)

● LinkedList ArrayList와 마찬가지로 List를 상속받는 컬렉션 클래스이다. List를 상속받으므로 데이터의 저장 순서를 유지하고, 데이터의 중복을 허용한다. LinkedList는 기존의 배열의 단점을 보완한 새로운 자료구조이다. 우선, 기존의 배열(Array)의 단점이 무엇이었나? 크기를 변경할 수 없다. 중간에 존재하는 요소의 삭제 또는 요소의 추가가 어렵다(시간이 많이 걸린다.) 사실 1과2는 서로 깊은연관이있다. 배열의 크기를 변경할 수 없기때문에 중간에 요소를 추가하거나 삭제하려면 새로운 배열을 생성하여 복사해야하기 때문이다. 그렇다면 LinkedList는 이러한 배열(Array)의 단점을 어떻게 보완하였고 차이점은 무엇이며, 왜 사용하는지에 대해서 알아보자. ● Array와 L..

Java/Java Study 2021.05.31

[Collections Framework] Iterator 와 메서드 iterator

갑작스럽게, 이 포스팅을 하는 이유는, 메서드 iterator()에 대한 설명이 잘 이해가 가지 않아 정리할 겸 나처럼 헤매는 사람이 혹시라도 있을 수 있을까 봐이다. (그리고 내가 또 까먹을까 봐) ● Iterator Iterator는 컬렉션에 저장된 요소들에 대한 접근을 표준화하였다. Iterator는 인터페이스이고 이 인터페이스에는 hasNext, remove, next 3개의 추상 메서드가 존재한다. hasNext - 불러올 다음 요소가 있는지 확인한다. 존재한다면 true를 반환 next - 순차적으로 요소를 불러온다. remove - next로 불러온 요소를 제거한다.(next 없이 단독으로 쓰일 수 없다.) 그리고 Collection에는 이 Iterator 인터페이스를 구현한 클래스의 객체를..

Java/Java Study 2021.05.27

[Collections Framework] ArrayList

● ArrayList ArrayList는 컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션 클래스이다. 인터페이스 List를 상속받으므로 그 특징 또한 그대로 물려받는다. ArrayList는 Array와 비슷한 면이 많지만 같진않다. 왜냐하면, Array는 정적 배열이고 ArrayList는 대표적인 동적 배열이다. ArrayList는 정적배열과는 다르게 추가, 삭제등을 할 수 있다. 이번 포스팅에선 ArrayList가 데이터를 저장하고 삭제, 추가하는 과정을 코드를 통해 조금 더 상세히 알아볼 것이다. 1) 순차적 데이터 저장 및 추가 ArrayList는 순차적으로 데이터를 저장하고 그 저장한 순서가 유지된다. 데이터를 추가할때는 ArrayList의 메서드, boolean add (Object o) 객체를..

Java/Java Study 2021.05.27

[Collections Framework] 컬렉션 프레임워크란?

● Collections Framework collections 이란 데이터의 군, 다수의 데이터를 의미하며 Collections Framework는 이런 다수의 데이터를 표준화된 방식(Framework)으로 처리하기 위하여 객체지향적인 설계로 고안된 프로그래밍 방식이다. 객체지향적인 설계로 되어있다는 것은 익히 알다시피 인터페이스와 다형성을 사용할 수 있으며, 그로 인해 코드의 재사용성을 높여주는 장점을 가진다. 컬렉션 프레임워크에 소속된 컬렉션 클래스들은 크게 3가지의 인터페이스를 구현하는데, 개발 시에 다룰 컬렉션, 다수의 데이터의 특징을 파악하여 해당 컬렉션에 사용하면 좋을 컬렉션 클래스를 사용하는 것은 개발자의 역량이다. 그렇다면 3가지 인터페이스와 그 특징을 알아보자 1) List - 순서가 ..

Java/Java Study 2021.05.24

[객체지향] 인터페이스(Interface) (5/24 어휘수정)

● 인터페이스는 기존의 추상화 클래스보다 더 추상화가 높은 추상화 클래스의 개념이며, 기존의 미완성 설계도라는 추상 클래스의 개념과 거의 일치한다. 추상 클래스와 더불어 다소 모호한 개념인 인터페이스에 대해서 알아보기 전에 , 우선 인터페이스는 무엇인지 추상 클래스와 비교해서 알아보고, 인터페이스의 작성규칙과 인터페이스의 다형성까지 공부하면, 인터페이스의 장점에 대해 이해하기 쉬울 것이다. 인터페이스의 장점을 알면 이것을 왜 쓰는지, 쓰는 목적까지 공부하는 데 있어서 좀 더 수월할 것이다. 1) 추상 클래스 vs 인터페이스 이전에 포스팅했던 추상 클래스는 abstract가 제어자로 붙는 클래스이다(추상 메서드를 포함하는). 추상 클래스는 추상 메서드 외에도 멤버 변수와 또한 완성된 메서드를 가질 수 있다..

Java/Java Study 2021.05.16