JVM/Java

    Process, Thread, Multi-Thread

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Process, Thread, Multi-Thread Process 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데, 이것을 프로세스라고 부른다. 하나의 애플리케이션을 두 번 이상 실행해서 다중 프로세스를 만들기도 한다. Thread 쓰레드는 사전적 의미로 한 가닥의 실이라는 뜻이다. 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어놓았다고 해서 유래된 이름이다. 하나의 쓰레드는 하나의 코드의 실행 흐름이기 때문에 한 프로세스 내에 쓰레드가 두 개라면 두 개의 코드 실행 흐름이..

    Stream

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Stream 자바 8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 반복자 Stream ※ Stream 이전의 Iterator 반복자 코드 List list = Arrays.asList("김코딩", "이자바", "김인기"); Iterator iterator = list.iterator(); while(iterator.hasNext()){ String name = iterator.next(); System.out.println(name); } ※ Stream으로 변경한 코드 List list = Arrays.asList("김코딩", "이자바", "김인기"); Stream st..

    람다식

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 람다식 자바는 객체 지향 프로그래밍이 개발의 주된 패러다임이었던 90년대에 디자인되었다. 객체 지향 프로그래밍 이전에도 함수적 프로그래밍 언어들이 있었는데, 현업에서 큰 호응을 받지 못했다. 그러나 최근 들어 함수적 프로그래밍이 다시 각광받고 있는데, 병렬 처리와 이벤트 지향 프로그래밍에 적합하기 때문이다. 그래서 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합함으로써 더욱 효율적인 프로그래밍이 될 수 있도록 프로그램 개발 언어의 양상이 변하고 있다. 자바는 함수적 프로그래밍을 위해 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식은 수학자 Alonzo Church가 발표한 ..

    Collection

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Collection 어떤 데이터를 저장할 때, 가장 간단한 방법은 배열을 이용하는 것이다. 배열은 쉽게 생성하고 사용 가능하지만 저장할 수 있는 배열의 객체 수가 배열을 생성할 때 결정되기 때문에 불특정 다수의 객체를 저장하기에는 문제가 있다. 이런 문제점을 해결하기 위해서 자바는 데이터를 저장하기 위해 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 그런 역할을 하는 컬렉션을 만들고, 관련된 인터페이스와 클래스를 포함시켜 두었다. 그리고 이들을 총칭해서 컬렉션 프레임워크라고 부르고 있다. 또한 몇 가지 인터페이스를 통해서, 다양한 컬렉션 클래스를 이용할 수 있도록 하고 있다. 컬렉..

    Generics

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Generics 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 외부에서 지정하기 위해서 타입을 파라미터 형태로 제공한다. 기존에는 객체에 여러 자료형을 받을 수 있도록 제작하려면 int, float, String 등 모든 자료형에 대해서 클래스를 하나씩 만들어줘야 했다. 이런 불편함을 해결하기 위해 가상의 자료형을 정의하고, 객체를 정의할 때 타입 파라미터로 선언하여 사용할 수 있도록 한 문법이다. 타입 파라미터에는 정해진 규칙은 없지만 일반적으로 대문자 알파벳 한 글자로 표현한다. 타입 인자 설명 T Type E Element K Key N Number V Value R Result p..

    예외처리

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 예외 처리 예외와 예외 클래스 자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 프로그램 실행 오류가 발생하는 것을 에러라고 한다. 또한 자바에서는 에러 이외에 예외(Exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 뜻한다. 예외가 발생하면 프로그램은 곧바로 종료된다는 점에서는 에러와 동일하다. 그러나 예외 처리(Exception Handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류가 있다. 하나는 일반 예외(Exception)이고, 다른 하나는 실행 예외(Runtime ..

    객체지향 프로그래밍

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 객체지향 프로그래밍 OOP(Object Oriented Programming) 객체지향 프로그래밍 방식은 Class를 정의하여 객체를 생성하여 사용하는 방식이라고 정리할 수도 있다. Class를 정의하는 방식을 통해 우리는 중복된 코드를 줄이고 코드의 재사용성을 높이면서 유지보수가 편리해지는 이점을 얻을 수 있다. 이 같은 객체지향의 효과를 더 높이기 위해 객체지향 3요소를 인지해야 한다. 객체지향(OOP) 3요소 캡슐화 : 값의 보호를 위해 객체의 필드, 메소드를 필요에 의해 감추거나 드러내는 것 다형성 : 동일한 타입을 가진 여러 객체가 같은 속성을 가지는 성질 상속성 : 특정 클래스를 부모 클래스로 지정하여 내용을 물..

    제어문

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 제어문 자바 프로그램을 시작하면 main() 메소드의 시작 중괄호부터 끝 중괄호까지 위에서부터 아래로 실행되는 흐름을 갖는다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 제어문이다. 제어문의 종류에는 조건문 과 반복문 이 있다. 조건문에는 if문, switch문 이 있고, 반복문에는 for문, while문, do-while문 이 있다. 제어문 블록이 실행 완료되었을 경우, 다시 제어문 처음으로 돌아갈지, 아니면 제어문 블록을 빠져나와 정상흐름으로 다시 돌아올지는 어떤 제어문을 사용하느냐에 따라 다르다. 제어문이 실행된 후 다시 제어문 처음으로 돌아가 반복하는 전자는 반복문의 경우를 의미한다. ..

    자료형

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 기본 자료형 자료형 / 타입 자료형, 타입은 변수에 저장되는 값의 종류와 범위를 결정짓는 요소이다. 이는 얼만큼 메모리 공간을 쓸 것인지에 대한 선언이기도 하다. 자바의 자료형은 값을 참조하는 기본 타입(primitive type), 객체를 참조하는 참조 타입(reference type), 두가지의 데이터 타입을 가지고 있다. 기본 타입에는 int, float, char, Boolean과 같은 타입들이 있고, 참조 타입에는 String, 배열, enum, 클래스, 인터페이스와 같은 타입들이 있다. 정수 타입 (byte, short, int, long) 정수는 모두 4개의 타입이 있으며 저장할 수 있는 값의 범위가 서로 다르..