
자바의 특징 1. 운영체제에 독립적 > 자바 이전의 언어들은 특정 CPU에만 작동하거나 특정 OS에 따라 다르게 작성해야 하는 언어들이 대부분 이었지만 자바는 개발 환경과 배포 환경이 다르더라도 프로그램을 다시 컴파일 할 필요 없이 실행이 가능하다. 2. 객체 지향

프로그램은 자료구조를 통해 데이터를 구성하고 표현하며 알고리즘을 통해 문제를 해결한다. 데이터 표현에 따라 문제를 해결하는 방법 알고리즘이 달라지기 때문에 데이터를 얼마나 잘 다루느냐가 중요하다. > 자바에서 데이터 타입은 크게 기본타입(primitive type)과 참조타입(reference type)으로 나눌수 있다. 기본타입(primitive typ...

자바에서 다른 변수들은 값을 저장하는 방식이지만 문자열은 문자열이 담겨 있는 주소를 참조하고 있다. 문자열을 변수에 담는 경우, 두가지 방법이 있는데 문자열 리터럴을 직접적으로 변수에 대입하는 방식과 new 연산자를 사용해서 객체를 생성하는 동시에 문자열을 대입하는 방법이다. 코드 예시 > name1과 name2는 동일한 문자열 리터럴로 생성된 객체를 ...

프로그래밍을 하면서 변수에 담긴 값을 확인해야 할 때가 있다. 출력하는 메서드를 사용할 수 있는데 System.out.println() 를 주로 사용하며 System은 내장 되어있는 System이라는 클래스, out은 출력한다는 기능으로 뒤에 print, printf로 원하는 출력 방식을 정할 수 있다. 1. 출력하기 : System.out.print()...

변수(Variable)란 데이터의 저장 공간을 의미하며 프로그램이 실행되면 메모리를 사용하여 정보를 기억시킨다. 메모리에 변수를 할당하고 필요할때마다 가져와서 사용할 수 있다. 변수를 사용하는 이유 > 메모리에 데이터의 저장 공간을 확보한다. 다른 개발자와 협업 시 데이터에 이름(변수명)을 붙여 소통한다. 데이터를 재사용한다. 변수의 선언과 할당 > 변...

Scanner는 자바에서 이용자에게 입력을 받는 하나의 도구이다. > import java.util.Scanner; / class 변수 타입이기 때문에 상단에 import 해줘야한다. > Scanner scanner = new Scanner(System.in); / Scanner 클래스를 new 연산자를 통해 인스턴스를 생성하고, 생성된 인스턴스를 변수 ...

BufferedReader > BufferedReader 클래스는 입력된 데이터를 바로 전달하는 것이 아닌, 버퍼에 저장해두었다가 전달하는 방식의 클래스이다. BufferedReader 클래스는 Scanner와 다르게 문자열 String 밖에 읽지 못한다. 그럼에도 사용하는 경우는 BufferedReader 클래스가 Scanner 클래스에 비해 상당히 큰 ...

if문의 소괄호 안에 boolean값으로 평가될 수 있는 조건식을 넣어주고, 중괄호 안의 실행 블록에는 조건식이 참일 때 실행하고자 하는 코드를 적어주면 된다. 기본형태 조건은 true나 false 두가지 경우밖에 없고 부등호 ==, , = 등을 통해 조건을 나타낼 수도 있다. else if, else 조건을 여러개 주고 싶거나 if의 조건식이 fa...

반복문은 특정 코드들을 반복적으로 실행하고자 할 때 사용되며, 반복문의 종류는 for문, while문, do-while문이 있다. for문은 반복횟수를 알고 있을 때 주로 사용되며, while문은 조건에 따라 반복할 때 주로 사용된다. for문 for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행한다. 기본형태 > 초기화는 for문이...

배열이란 동일한 타입의 변수들을 하나의 묶음으로 다루는것. 배열은 1차원 배열과 다차원 배열, 이 두 가지로 나눌 수 있다. 배열 선언 및 초기화 배열을 생성하기 위해서는 위에서처럼 new 데이터타입[배열크기]를 입력해야 한다. new int[5]는 정수형 요소를 5개 갖는 배열을 만든다는 뜻이다. 코드 예시 day 배열의 길이는 7이지만 배열의 요...

객체지향 프로그래밍(OOP)이란 Object Oriented Programming의 약자로, 프로그램밍에서 필요한 데이터를 한데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 특정 기능을 구성하는 프로그래밍 방법이다. 객체지향 프로그래밍의 특징 > 추상화(abstraction) 불필요한 부분을 생략하고 객체...

클래스와 객체 객체란 크게 속성과 기능이라는 두 가지 구성요소로 이뤄져있고 일반적으로 객체는 다양한 속성과 기능의 집합으로 이뤄져있다. 이러한 객체를 정의한 설계도, 프레임을 클래스라고 한다. 클래스는 객체를 생성하는데 사용되며, 반대로 객체는 클래스에 정의되고 설계된 내용이다. 클래스의 구조 > 필드(멤버변수) 클래스의 속성을 나타내는 변수이다. ...

필드(Field) > '클래스에 포함된 변수'를 의미하며 객체의 속성을 정의할 때 사용된다. 자바에서 변수는 클래스 변수, 인스턴스 변수, 지역 변수 세 가지로 구분될 수 있고 이 중 필드라 부르는 것은 클래스 변수와 인스턴스 변수이다. 이 둘은 static키워드의 유무로 구분하는데 static 키워드가 함께 선언된 변수는 클래스 변수, 그렇지 않은 것은 ...

생성자(Constructor)란 > 생성자는 말 그대로 객체를 생성하는 역할을 하는 클래스의 구성 요소로서 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다. 하지만 메서드와는 다른점이 있는데 첫 번째는 생성자의 이름이 반드시 클래스의 이름과 같아야 한다는 점, 두 번째는 생성자는 리턴 타입이 없다는 점이다. 생성자 선언 코드 예시 생성자의 이...

상속이란 객체지향 프로그래밍에서 상속이란 부모(상위) 클래스의 멤버를 자식(하위) 클래스에 물려주어 자식 클래스가 갖고 있는 것처럼 사용할 수 있다. 상속의 장점 > 이해 용이 : 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 최계화된 전체 구조를 파악하기 쉽다. 코드 재사용성 : 데이터와 메서드의 오버로딩을 피하고 기존 클래스에 있는 것을 재사용할...

캡슐화란 캡슐화란 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것을 의미한다. 캡슐화의 장점 > 캡슐화의 가장 큰 장점은 정보 은닉에 있다. 즉, 외부로부터 객체의 속성과 기능이 함부로 변경되지 못하게 막고, 데이터가 변경되더라도 다른 객체에 영향을 주지 않기에 독립성을 확보할 수 있다. 더 나아가 유지보수와 코...

다형성이란 > 다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있다. 참조변수의 다형성 참조변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 참조할 수 있다. 참조변수의 타입...

추상화란 클래스를 정의할 때, 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 개략화 하는 것. 추상화를 하는이유 > 추상화를 통해 코드를 잘 설계했다면 여러개의 클래스를 정의했을 때, 중복 코드가 현저히 줄어들 것. 코드가 간결해지기 때문에 생산성 증가, 유지 보수, 가독성 증가 잘 만들어진 슈퍼 클래스 덕분에 코드의 재사용성이 증...

오버로딩(Overloading) 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것. 보통 하나의 메서드에 하나의 기능을 구현하는데, 같은 이름의 메서드로 여러 기능을 구현하기 때문에 '과적하다'라는 뜻의 "overload"를 사용한다. 코드 예시 오버로딩의 조건은 메서드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 오버로딩을 사...

컬렉션 프레임워크란? 컬렉션 프레임워크는 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)를 하기 위해 사용되는 라이브러리이다. 왜 사용하는가? > 데이터들을 효율적으로 관리 하기 위해 사용된다. 예를 들어 배열을 사용하다 보면 여러 비효율적인 문제가 생기는데, 대표적으로 배열의 크기가 생성할 때 결정되며 그 크기가 고정적이기 때문에 크기가 ...

List란? > List 컬렉션은 객체를 일렬로 늘어놓은 구조로 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 삭제할 수 있는 기능이 제공된다. 또 List 컬렉션은 객체 자체를 저장하는 것이 아닌 객체의 주소값을 참조하며, 비슷한 구조를 갖고 있는 Set 인터페이스와 다르게 동일한 객체를 저장하는 것을...

Set이란? > Set 컬렉션은 집합이란 의미를 가지는 set List 컬렉션과 다르게 저장 순서를 유지하지 않으며 중복도 허용되지 않는다. Set 컬렉션은 순서가 없기 때문에 인덱스를 통해 객체를 가져오는 메서드가 없는데 이는 컬렉션 인터페이스에서 제공하는 Iterator() 메서드로 대체할 수 있다. Set 컬렉션의 대표적 클래스로는 HashSet,...

Map이란? > Map 인터페이스는 키(Key)와 값(Value)로 구성된 객체를 저장하는 구조이다. Map의 특징으로 키는 중복 저장이 안되고, 값은 중복 저장이 가능하다. 만약 기존에 저장된 키와 동일한 키로 값을 저장할 경우 새로운 값으로 변경된다. Map 인터페이스를 구현한 클래스로 HashMap, HashTable, TreeMap, SortedM...

제네릭(Generic)이란? > Generic은 "일반적인"이라는 의미를 갖고 있으며, 클래스 내부에서 사용할 데이터 타입을 외부에서 설정해 주는 것이다. 다양한 데이터를 다룰 때 데이터의 타입을 특정 타입으로 고정시켜 줄 수 있다. 제네릭 사용 예시 제네릭을 사용하지 않고 데이터를 가져올 경우 다시 특정 타입으로 변경해야 한다. 이런 경우에 제네릭을 ...

enum이란? > enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미한다. JDK 1.5 이전에는 enum을 지원하지 않았고 여러 상수를 정의해서 사용하기 위해 public static final을 통해 전역변수로 상수를 설정하여 사용했지만, 상수명이 중복되거나, 인터페이스를 사용해 문제를 해결해도 타입 안정성에 문제가 생기는 등 이러한 단...