프로그램은 자료구조(데이터)와 알고리즘의 결합으로 이루어진다. Java의 데이터 타입은 기본 타입과 참조 타입으로 분류된다.정수 리터럴byte : 1byte 8bitchar : 2byte 16bitshort : 2byte 16bitint : 4byte 32bitlong
사칙연산을 다루는 연산자로 두 개의 피연산자를 가지는 이항 연산자변수에 갑을 대입할 때 사용하는 이항 연산자로 오른쪽에서 왼쪽으로 결합한다증감 연산자는 피연산자를 1씩 증가 혹은 감소시킬 때 사용한다전치와 후치로 나뉘며 전치의 경우 먼저 수행된 후에 연산을 하고 후치는
하나의 값을 저장하는 메모리 공간값을 저장할 공간을 마련하기 위해 선언한다지역 변수는 읽기 전에 꼭 초기화 해야 함변수 : 하나의 값을 저장하기 위한 공간, 변경 가능상수 : 한 번만 값을 저장하는 공간, 변경 불가능리터럴 : 그 자체로 값을 의미하는 것데이터 타입은
자동으로 줄바꿈변수의 값을 그대로 출력값을 변환하지 않으면 다른 형식으로 출력 불가능지시자를 통해 변수의 값을 변환 가능지시자는 출력할 값을 지정해주는 역할출력 후 줄바꿈을 하지 않음화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
컴퓨터와 가위바위보 하기컴퓨터는 랜덤으로 가위, 바위, 보를 낸다사용자는 값을 입력하여 결과를 처리한다
조건문 : 조건을 만족할때만 코드를 수행 (0~1번)반복문 : 조건을 만족하는 동안 코드를 수행 (0~n번)조건식이 참일 때 블럭 안의 코드를 수행한다else는 조건이 거짓일 때 블럭 안의 코드를 수행하며 생략할 수 있다if문은 중첩이 가능하다if ~ else / if
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 배열을 다루기 위한 참조변수의 선언각 요소에 자동으로 붙는 번호인덱스의 범위는 0부터 '배열길이 - 1'까지배열은 따로 값을 입력하지 않으면 각 데이터 타입에 따른 기본값을 가진다배열은 한 번 생성하면 길이를 바꿀
객체 지향 프로그래밍 (OOP) 객체 지향 프로그래밍은 모든 데이터를 객체로 취급하며 객체가 프로그래밍의 중심이 된다. 객체 지향 프로그래밍의 특징 추상화 클래스 자바에서 클래스는 객체를 정의하는
클래스와 객체, 인스턴스 클래스 객체를 정의해 놓은 것 객체를 생성하는 데 사용 클래스의 작성 public class가 있는 경우 소스파일의 이름은 public class와 일치해야 한다 하나의 소스파일에 둘 이상의 public class가 존재하면 안된다 객
접근 제어자는 클래스의 멤버(변수, 메서드)들의 접근 권한을 지정한다. public 접근 제어자는 프로그램 어디서나 직접 접근할 수 있다.또한 private 멤버와 프로그램에 접근할 수 있게 하는 역할을 수행한다.private 접근 제어자를 사용하여 선언된 클래
상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다 (생성자, 초기화블럭 제외)기존에 작성된 클래스
다형성 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있다 단 부모 클래스가 자식 클래스를 참조할 때 부모 자신의 멤버와 오버라이딩 메서드만 접근할 수 있다 참조변수의 다형성 클래스는 상속을 통해 확장될 수는 있어도 축소될 수는 없으므로
문자열을 위한 클래스로 char\[] + 메서드로 이루어져 있다클래스이지만 new 키워드 없이 사용할 수 있다 값을 읽기만 할 수 있고 내용을 변경할 수 없는 불변 객체이다 기존 문자열을 변경하면 새로운 String 인스턴스가 생성되어 다른 주소를 가리키게 된다
String과 마찬가지로 문자열을 저장하고 다루는 클래스String처럼 문자형 배열(char\[])을 내부적으로 가지고 있다String과 달리 내용을 변경할 수 있다배열은 길이 변경 불가, 공간이 부족하면 새로운 배열을 생성해야 한다StringBuffer는 저장할 문자
서로 관련된 클래스의 묶음클래스는 클래스 파일(.class), 패키지는 폴더, 하위 패키지는 하위 폴더클래스의 실제 이름은 패키지를 포함 (java.lang.String)패키지는 소스파일의 첫 번째 문장으로 단 한번 선언같은 소스파일의 클래스들은 모두 같은 패키지에 속
추상 메서드의 집합으로 static 메서드, 상수 등을 부수적인 요소로 구성되어 있다구현된 것이 전혀 없는 설계도로 모든 멤버가 public이다추상 클래스 : 추상 메서드를 가진 일반 클래스인터페이스 : 추상 메서드의 집합으로 다중 상속이 가능하며 iv를 가질 수 없다
내부 클래스란 하나의 클래스 내부에 선언된 또 다른 클래스를 말한다. 이러한 내부 클래스는 외부 클래스에 대해 긴밀한 관계일 때 선언할 수 있다.내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근이 가능하다서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의
컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 이러한 컬렉션 프레임워크는 자바의 인터페이스
ArrayList는 기존의 Vector를 개선한 것으로 구현원리가 기능적으로 동일하다. ArrayList와 다르게 Vector는 자체적으로 동기화처리가 되어 있다. List 인터페이스를 구현하므로, 저장 순서가 유지되고 중복을 허용하며 Object 배열을 이용하여 데이
배열은 구조가 간단하고 데이터를 읽어오는 시간이 짧은 장점이 있지만 단점도 존재한다.크기를 변경할 수 없어 변경이 필요한 경우 새로운 배열을 생성 후 데이터를 복사한 후 참조를 변경해야 한다미리 큰 배열을 생성하는 방법도 있지만 메모리가 낭비된다비순차적인 데이터의 추가
Stack 스택은 마지막에 저장된 데이터를 가장 먼저 꺼내오는 LIFO(Last In First Out) 구조로 차곡차곡 쌓인 책이나 박스 등을 생각하면 된다. 순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList 같은 배열 컬렉션이 구현하기 적합하다. 또
컬렉션에 저장된 데이터를 접근 방법을 표준화한 인터페이스이다. List, Set, Map 각 컬렉션의 구조가 다르지만 Iterator를 사용하면 hasNext()와 next()로 컬렉션의 데이터를 읽어올 수 있다. iterator를 컬렉션에 호출해서 Iterator를
Arrays 클래스에는 배열을 유용하게 다룰 수 있는 메서드들이 정의되어 있다. 정의된 메서드는 모두 static 메서드이다.copyOf() : 매개변수로 받은 배열과 길이만큼 새로운 배열에 복사한다.copyOfRange() : 지정한 범위만큼 새로운 배열을 복사하며
Set 인터페이스를 구현한 컬렉션 클래스로 중복을 허용하지 않으며 순서를 유지하지 않는다. 순서를 유지하려면 LinkedHashSet 클래스를 사용하면 된다.
TreeSet은 이진 탐색 트리로 구현되어 있다. 이진 탐색 구조는 범위 탐색과 정렬에 유리한 구조이며 모든 노드가 최대 2개의 하위 노드를 갖는 특성이 있다. LinkedList처럼 하나의 노드가 이전 노드와 다음 노드의 주소를 저장하고 있는 구조이다.첫 번째로 저장
Map 인터페이스를 구현해서 데이터를 키와 값의 쌍으로 저장한다. 또한 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 용이하다. 순서를 유지해서 저장해야 한다면 LinkedHashMap을 사용하면 된다.key : 컬렉션 내의 key 중에서 유일