변수는 값을 저장할 수 있는 메모리상의 공간이며, 데이터 타입(Data Type)을 가진다.
자료형(Data Type) 자료형은 변수의 종류, 단위를 뜻하며 변수의 종류에 따라 담을 수 있는 데이터의 타입과 크기가 다르다.
연산자 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(Operation)이라 한다. 연산에 사용되는 표시나 기호를 연산자(Operator)라고 한다.
조건문은 조건식의 결과에 따라 블록의 실행 여부가 결정된다. 조건문에는 if, switch문이 있다.
프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 제어문 중 하나이다.
배열은 같은 타입의 변수들로 이루어진 유한 집한으로 정의할 수 있다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 한다.
클래스와 객체
상속(Inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.
다형성(Polymorphism)이란 한 객체가 `여러가지 타입`을 가질 수 있는 것을 의미한다.
추상 메소드(Abstract Method) 추상 메소드란 자식 클래스에서 반드시 오버라이딩(overriding) 해야만 사용할 수 있는 메소드이다.
자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 된다.하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다.
내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 말한다.이러한 내부 클래스는 외부 클래스(outer class)에 대해 두 개의 클래스가 서로 긴밀한 관계를 맺고 있을 때 선언할 수 있다.
콘솔 입출력, 파일 입출력
정상적이지 않은 Case를 두고 예외라고 한다.ex) 0으로 나누기, 배열의 인덱스 초과, 없는 파일 열기 등...
자바에서 컬렉션 프레임워크(Collection Framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다.즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다.
람다 표현식(Lambda Expression)이란 간단히 말해 메소드를 하나의 식으로 표현한 것이다.메소드를 람다 표현식으로 표현하면, 클래스를 작성하고 객체를 생성하지 않아도 메소드를 사용할 수 있다.
배열, 컬렉션 등의 데이터를 하나씩 참조하여 처리 가능한 기능for문의 사용을 줄여 코드를 간결하게 함스트림은 크게 3가지로 구성(Stream 생성,중개 연산,최종연산)
제네릭(generic)이란 "타입을 일반화"것을 의미하며, 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것을 의미한다.클래스에서 사용하는 변수의 자료형이 여러개 일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 후에
객체를 비교 할 수 있도록 하기 위한 인터페이스compareTo(T o) 메소드 하나가 선언되어 있는 인터페이스자기 자신과 매개변수로 들어오는 객체를 비교반환형 : int양수: 비교 기준이 더 큰 경우0: 자신과 같은 경우음수: 비교 기준이 더 작은 경우객체를 비교할
자바에서 Iterator는 컬렉션 프레임워크(Collection Framework)에서 값을 가져오거나, 삭제할 때 사용한다. 컬렉션 프레임 워크에 저장된 요소들을 하나씩 차례로 참조순서가 있는 List 인터페이스의 경우는 Iterator를 사용하지 않고 get(i)메
Process: 실행 중인 프로그램. 프로그램이 실행되면 OS로 부터 메모리를 할당받아 프로세스 상태가 됨.Thread: 하나의 프로세스는 하나 이상의 Thread를 가지게 되고, 실제 작업을 수행하는 단위는 Thread이다.여러 Thread가 동시에 수행되는 프로그래
critical section은 두 개 이상의 Tread가 동시에 접근하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역이다.semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다.한 순간 오직 하나의 Thread만
리소스가 어떤 조건에서 더 이상 유효하지 않은 경우, 리소스를 기다리기 위해 Thread가 wait() 상태가 된다.wait() 상태가 된 Thread는 notify()가 호출 될 때까지 기다린다.유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 T
특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.소스나 기계코드로 바로 전활될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다.디자인 패턴은 프로그래머가 어플리케이션이나 시스템을
어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다.A의 기능을 B의 기능으로 연결시킬 때, 혹은 두개의 인터페
클라이언트에 독립적으로 문제 해결 전략을 바꾸고 싶을 때 사용한다.다양한 문제해결 방법을 제공해야 할 때 사용한다.일반적으로 알고리즘을 바꿀 때 많이 사용되는 패턴이다.GitHub: 전략 패턴 구현 코드문제해결의 큰 흐름은 유지하고, 단계별 처리는 하위 클래스에 위임하
Java는 크게 LTS(Long-term Support) 버전과 non-LTS 버전으로 나뉜다. LTS라 불리우는 장기 지원 버전은 후속 버전이 출시되어도 일정 기간 동안 지원을 지속하지만 non-LTS 버전은 지원이 종료된다는 차이점이 있다.안정적인 시스템 운용 및
자바의 타입은 크게 기본 타입, 참조 타입으로 분류된다.여기서 참조 타입이란 객체(object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스를 말한다.기본 타입으로 선언된 변수와 참조 타입으로 선언된 변수의 차이점은 저장되는 값이다.기본 타입은 byte
배열은 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조이다.위의 데이터는 다음과 같이 배열로 생성할 수 있다.score 배열의 각 인덱스는 각 항목의 데이터를 읽거나 저장하는 데 사용되며 아래와 같이 배열 이름 옆에 대괄호 \[]
열거 타입은 한정된 값인 열거 상수(enumeration constant) 중에서 하나의 상수를 저장하는 타입이다.여기서 Week가 열거 타입이다. Week로 아래와 같이 변수를 선언할 수 있고, 그 변수에 저장할 수 있는 것은 Week에 선언된 7개의 열거 상수 중
변수(variable) 변수는 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을 수 있다. 정수 타입 변수에는 정수값만 저장할 수 있고, 실수 타입 변수에는 실수값만 저장할 수 있다. 하나의 변
String은 소위 불변(imuutable)객체라고 한다. 즉, String 객체는 한번 생성되면 변경할 수 없다. \+ 연산자를 사용하여 문자열을 열결할 수 있으나,연결할 때마다 새로운 문자열 객체가 생성되고 이전에 있던 문자열은 JVM의 GC가 처리하게 된다.따라
현실 세계에서 어떤 제품을 만들 때 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 제품을 완성하듯, 소프트웨어를 개발할 때에도 부품에 해당하는 객체를 먼저 만든다.그리고 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OOP: Objec
생성자(Constructor) 생성자는 new 연산자로 클래스로부터 객체를 생성할 떄 호출되어 객체의 초기화를 담당한다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙(heap)영역에 객체가 생성되고 객체의 번지가 리턴된다. 그리고 리턴된 객체의 번지는 클래스
자바는 클래스 멤버를 인스턴스 멤버와 정적 멤버로 구분해서 선언할 수 있도록 하고 있다.인스턴스 멤버는 객체마다 가지고 있는 멤버를 말하고, 정적 멤버는 클래스에 위치시키고 공유하는 멤버를 말한다.인스턴스 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소
현실에서 상속은 부모가 자식에게 물려주는 행위를 말한다.자식은 상속을 통해서 부모가 물려준 것을 자연스럽게 이용할 수 있다.객체 지향 프로그래밍에서도 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있다.프로그램에서는 부모 클래스를 상위 클래스라고 부르고, 자식 클래스
객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다.추상 클래스와 실체 클래스는 상속의 관계를 가지고 특성을 물려받고, 추가적인 특성을 가질 수 있다.여기서 특성이란 필드와메소드들을
자바에서 인터페이스(interface)는 객체의 사용 방법을 정의한 타입이다.인터페이스를 통해 다양한 객체를 동일한 사용 방법으로 이용할 수 있다.인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객
자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 에러(Error)라고 한다. 그리고 에어 이외에 프로그램 자체에서 발생하는 오류는 예외(Exception)라고 부른다.예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으