자바 프로그램이 실행되는 소프트웨어로 만들어진 가상 컴퓨터(VM) 한 번 작성하면, 어디서든 실행 가능(Write once, run anywhere) 일반 애플리케이션은 OS에서 실행되는 반면, Java 애플리케이션은 JVM 위에서 실행된다. 그래서 OS와 독립
https://github.com/ojdkbuild/ojdkbuild/releases/download/java-1.8.0-openjdk-1.8.0.292-1.b10/java-1.8.0-openjdk-1.8.0.292-1.b10.ojdkbuild.windows.
eclipse.org 사이트에서 다운로드 설치.다운받는 국가를 확인 후 자신에 맞는 국가 선택해서 다운받기다운로드 후 이클립스를 켜서 workspace를 설정해준다.workspace 폴더는 이클립스 폴더 아래로 지정할 수 없다.창 하나하나를 view라 하고, 여러 개의
ctrl + shift + L = 단축키 전체 목록 ctrl + +, - = 에디터 폰트 크기 조절 ctrl + D = 한 줄 삭제 ctrl + alt + shift + down = 행단위 복사 (기본값은 ctrl + alt + down) alt + shift
L = Long f = float d = double (생략가능)접미사는 대소문자를 구별하지 않지만, 1과 혼동 가능하므로 대문자로 사용하는 것이 Best!'\\n' = 개행문자(줄바꿈 문자)"문자" 여도 문자열이 된다.byte b = 127; (int 타입이 된
논리형(boolean)true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용된다.문자형(char)문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.(여러 문자를 저장하고 싶을 때는 String 타입을 사용해야 한다.)정수형(by
Scanner란? \- 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스Scanner를 사용하려면 \- 1. import문 추가 (import java.util.\*;)Scanner객체의 생성 (Scanner scanner = new Scanner(System.
연산자 : 연산을 수행하는 기호 (+,-,\*,/) 피연산자 : 연산자의 연산 수행 대상 Ex) x + 3 에서 x와 3은 피연산자, +는 연산자모든 연산자는 연산결과를 반환한다. (연산결과를 반환하지 않으면 연산자가 아니다.)Ex) 4 x + 3 에서 x가 5
조건식을 연결 할 때 사용하는 연산자 || (or결합) : 피연산자 중 어느 한 쪽이 true이면 true를 결과로 얻는다. &&(AND결합) : 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다. Ex) x는 10보다 크고 20보다 작다.'x>10'와 'x
현재까지는 main 메소드 이후 순서로 실행이 되었다. 그런데, 조건문을 사용하게 되면, 다르게 사용할 수 있다.조건문(if/switch) : 조건을 만족할때만 {}를 수행(0~1번)Ex) if (score > 60) { System.out.println("합격입니다
ch 4-20~24 break문, continue문 이름 붙은 반복문 break문 > 자신이 포함된 하나의 반복문을 벗어난다. while(true)에서 true는 생략불가 continue문 > 자신이 포함된 반복문의 끝으로 이동 - 다음 반복으로 넘어감 전체 반복
커맨드 라인에 입력한 값이 문자열 배열에 담겨서 전달된다."Hello world"는 공백이 있으므로 두 개로 인식한다.테이블 형태의 데이터를 저장하기 위한 배열이런 형태의 데이터를 저장하기 위한 배열이다. (이런 형태의 배열이 여러 개 모이면 3차원 배열)int sco
score.length는 각 scoren의 길이 즉, 개수가 되며 n = 4 , 개수는 3이므로 4 \* 3 = 12로 12번 반복하게 된다. 2차원 배열을 사용함에 있어서 이중 for문을 많이 사용한다.%d는 숫자 / %s는 문자열 출력 지시자 / %n은 줄바꿈문자이
80년 초 소프트웨어의 위기 - 빠른 변화를 못쫓아감 -> 해결책으로 객체지향 언어를 도입(절차적 -> 객체지향) 코드의 재사용성이 높고 유지보수가 용이, 중복 코드 제거 객체지향 언어 = 프로그래밍 언어 + 객체지향개념규칙객체지향 프로그래밍(OOP Object-Or
public class가 있다면, 무조건 소스파일명은 이와 같아야 한다.public class가 하나도 없다면, 여러 클래스명 중 아무거나 가능하다.원래 하나의 소스파일에는 하나의 클래스만 작성하는 것이 바람직하다.public class는 무조건 하나여야 한다.publ
객체 배열 == 참조변수 배열Ex) Tv tv1, tv2, tv3; → Tv\[] tvArr = new Tv3;// 객체를 생성해서 배열의 각 요소에 저장tvArr0 = new Tv();tvArr1 = new Tv();tvArr2 = new Tv();Tv\[] tv
변수는 크게 클래스 영역과 메서드 영역으로 나뉜다.변수와 메서드의 순서는 상관없다.클래스 영역 (클래스의 시작 ~ 클래스의 끝) iv (인스턴스 변수)cv (클래스 변수(static변수, 공유변수)) // static + iv변수 선언만 가능메서드 영역 (메서드의 시작
1\. 문장들을 묶어놓은 것. \- 작업단위로 문장들을 묶어서 이름 붙인 것 첫 번째 : 배열을 초기화두 번째 : 배열을 출력세 번째 : 배열을 출력두 번째 & 세 번째 : 코드 중복 -> 중복을 제거해야 한다.별도의 메서드를 만들어 배열 출력을 담는다. (printA
실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.반환타입이 void가 아닌 경우, 반드시 return문 필요그런데, 이런식으로 조건식이 참일 때 실행되는 코드만 적게 된다면 오류가 발생한다.그래서 조건식이 거짓일 때 실행되는 코드도 적어줘야 한다.메서드의 반환타입이
기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.(read only) Data 타입 d가 Data객체를 생성한다. (멤버가 하나이기 때문에 x가 만들어지고 x의 주소값이 d의 주소값에 저장되고 참조변수가 객체의 값을 가지게 된다.)참조변수 d가 가지는 x의 값이
한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것 원래는, 메서드 : 메서드 이름 = 1 : 1 그러나, 오버로딩 = 메서드 : 메서드 이름 = n : 1 이 가능오버로딩의 대표적인 예로는 println이 있다. (뒤의 매개변수만 다르다.)Ex) void
생성자에서 다른 생성자 호출할 때 사용 다른 생성자 호출시 첫 줄에서만 사용가능원래 Car2 클래스를 사용해야 하지만 this()를 사용생성자 = 코드의 중복을 제거를 위해 서로 호출하는 경우가 많다.지정해주지 않으면 디폴트 값을 주어야 한다. (그런데 밑의 코드와
기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용)두 클래스를 부모와 자식으로 관계를 맺어주는 것. \- Parent 클래스와 Child 클래스는 상속관계!자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외) \- 부모의 부모 클래스가
Java는 단일 상속만(하나의 조상만을 상속)을 허용한다.(C++은 다중상속 허용)조상이 2개가 되면, 각각의 조상에 같은 이름의 변수가 존재하면 충돌 가능성이 있다.비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.Tv는 상속관계로 처리하고, DVD는
ch 7-10,11 참조변수 super, 생성자 super() 참조변수 super > 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에만 존재(this와 비슷/static 메서드 내에서 사용불가) 조상의 멤버를 자신의 멤버와 구별할 때 사용(this는 lv와 iv 구별에 사용) 이름은 같아도 x가 2개 만들어지고 조상의 x (=super....
클래스를 사용할 때 패키지이름을 생략할 수 있다.컴파일러에게 클래스가 속한 패키지를 알려준다.import문이 있어서 Date에 java.util을 사용하지 않아도 Ok!이클립스 단축키 (ctrl + shift + o)java.lang패키지의 클래스는 (기본 패키지이기
private : 같은 클래스 내에서만 접근이 가능하다. (default) : 같은 패키지 내에서만 접근이 가능하다. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다. public : 접근 제한이 전혀 없다.4개 중
사용할 수 있는 멤버의 갯수를 조절하는 것조상, 자손 관계의 참조변수는 서로 형변환 가능차-소방차 / 차-구급차 간의 형변환이 가능하지만, 소방차-구급차 간의 형변환은 불가하다.<car 클래스> <car 클래스를 부모로 하는 FireEngine 클래스>&l
참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환1\. instanceof 연산자로 확인(형변환 해도 되는지) -> 2. 형변환형변환 전에 반드시 instanceof로 확인해야 함형변환을 하는 이유는 인스턴스의 원래 기능을 모두 사용하려고 Car타입의 리
조상타입의 배열에 자손들의 객체를 담을 수 있다.다형성 장점 : 1.다형적 매개변수 2. 하나의 배열에 여러 종류 객체 저장Product에 여러 배열을 담을 수 있다.i++ = 물품을 카트에 저장하는 역할을 함변수를 하나 두고 변수를 하나씩 늘려가며, 데이터를 하나씩
미완성 설계도. 미완성 메서드를 갖고 있는 클래스미완성클래스와 미완성메서드는 {}이 없으므로 abstract를 붙여줘야 한다.다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가.상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능추상메서드 구현을 했으므로 더
여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통 부분을 뽑아서 추상클래스를 만든다.각 유닛의 위치와 이동,정지 기능이 공통된다.그래서 공통된 기능을 하나의 Unit이라는 클래스를 만들어 담았다.보병과 탱크, 수송선은 Move라는
추상 메서드의 집합(static메서드,상수,디폴트메서드도 포함은 된다.)구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public)작은 객체 1개 + 큰 객체 1개의 구조노란색 : 메서드안의 동그라미들 : iv(변수)작은 객체에서 큰 객체의 변수에 접근하기 위해서
두 대상(객체0간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.Ex) 사람 - 기계의 관계에서 기계를 바로 사용하기 보다 사람-껍데기-기계 관계라면, 기계를 사용하기 더 수월해지는데 껍데기=인터페이스라고 생각하면 된다.중간 역할을 하는 매개체가 있기 때문에 변
인터페이스에 디폴트 메서드, static메서드 추가 가능(JDK1.8부터) 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움. Ex) Object -> ..... -> 인터페이스 일 때, interface \~\~~ {boolean isfinished(추
내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일 원래 클래스 앞에는 (default) 또는 public만 가능하다.그러나, 내부 클래스 앞에는 private, protected가 가능하다.인스턴스 내부 클래스static 내부 클래스 : static 멤버를 가질
ch 8-1~3 프로그램오류, 예외 클래스의 계층구조 프로그램 오류 > 컴파일 에러(compile-time-error) : 컴파일 할 때 발생하는 에러 런타임 에러(runtime-error) : 실행할 때 발생하는 에러 논리적 에러(logical-error) : 작성
ch 9-1~3 Object클래스, equals() Object클래스 > 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. notify(),wait()등은 쓰레드와 관련된 메서드이다. finalize : 생성자와 반대되는 메서드로 객체가 소멸될 때
예외를 처리하는 방법 : try-catch문(=직접 처리), 예외 선언하기(=예외 떠넘기기 또는 알리기), 은폐(덮기 / 빈 catch블럭을 추가하는 것)메서드가 호출시 발생가능한 예외를 호출하는쪽에 알리는 것메서드 + throws + 예외 예외를 발생시킬 때는 thr
한 예외가 다른 예외를 발생시킬 수 있다.예외 A가 예외 B를 발생시키면, A는 B의 원인 예외(cause exception)Throwable initCause(Throwable cause) : 지정한 예외를 원인 예외로 등록 (int cause로 두 예외를 연결 시켜
ch 9-4~6 hashCode(), toString() hashCode() > 객체의 해시코드(hash code)를 반환하는 메서드 해시코드 = 정수값 ("해시"라는 알고리즘에서 사용) Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환
ch 9-15~18 StringBuffer클래스 StringBuffer클래스 > String처럼 문자형 배열(char[])을 내부적으로 가지고 있다. 문자열을 저장하고 다루기 위한 클래스 그러나, String과 달리 내용을 변경할 수 있다.(mutable) Str
String처럼 문자형 배열(char\[])을 내부적으로 가지고 있다.문자열을 저장하고 다루기 위한 클래스그러나, String과 달리 내용을 변경할 수 있다.(mutable)StringBuffer를 만든 후, 문자열 abc를 저장하는 배열을 만들면, char배열이 만들
StirngBuffer는 동기화되어 있다. 멀티 쓰레드에 안전(thread-safe)싱글 쓰레드 : 한번에 1개 작업 (동시작업 불가 / 데이터 공유X)멀티 쓰레드 : 한번에 n개 작업 (동시작업 가능 / 데이터 공유)멀티 쓰레드는 데이터 공유가 가능하므로 다른 사람과
java.text패키지의 DecimalFormat, SimpleDateFormatDecimalFormat : 숫자를 형식화SimpleDateFormat : 날짜를 형식화숫자와 날짜를 원하는 형식으로 쉽게 출력 가능(숫자. 날짜 -> 형식 문자열)10진수를 지수 형식으로
컬렉션(collection)여러 객체(데이터)를 모아 놓은 것을 의미프레임웍(framework)표준화, 정형화된 체계적인 프로그래밍 방식컬렉션 프레임웍(collections framework)컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식컬렉션을 쉽고 편리
List 인터페이스 = 순서가 있고, 중복을 허용한다.List인터페이스를 구현한 컬렉션 클래스 : 1. ArrayList 2. LinkedListArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일 ArrayList와 달리 Vector는 자
Stack = LIFO(Last In First Out)구조. 저장된 것을 제일 먼저 꺼내게 된다. / 밑이 막힌 상자 (맨 아래 = 처음 저장한 값 / 맨 위 = 마지막에 저장한 값) / 넣는 순서는 아래에서 위지만, 꺼내는 순서는 위에서 아래다.Queue = FIF
컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스hasNext()는 읽어 올 요소가 남아있는지 확인 후 있다면, next()를 불러온다. / 없다면 falseEnumeratrion은 Iteratro의 구버젼ListIerator는 Iterator의 접근성을 향상시킨
HashSet은 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인 같은 객체가 없으면 저장하고, 있으면 저장하지 않는다. (set은 순서가 없고 중복이 존재하지 않기 때문에)boolean add(Object o)는 저장할 객체의 equals()와 hashCode()
기본적으로 add() / remove() / size() / isEmpty() / iterator() 가 있다.Comparator = 비교기준 제공 (없으면, Cmparable를 사용)first = 제일 작은 것last = 제일 큰 것ceiling = 올림floor =
생성자해시 테이블 = 배열 + 링크드리스트배열 초기용량을 정할 수 있다.Map을 HashMap으로 바꿀 수 있다.put = 데이터 저장, (key / value)를 저장putAll(Map m) = Map에 있는 모든게 저장된다.remove = 삭제replace = 변경
컴파일시 타입을 체크해주는 기능(compile-time-type-check) - JDK1.5객체의 타입 안정성을 높이고, 형변환의 번거로움을 줄여줌지네릭스의 장점1.타입 안정성을 제공한다.2.타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.Exception
지네릭 클래스 선언참조변수와 생성자가 일치해야 한다.대입된 타입은 어느거나 가능하다.참조 변수와 생성자의 대입된 타입은 일치해야 한다.Product = 조상 / Tv = 자손 관계일 때도 불가능하다.지네릭 클래스간의 다형성은 성립.(여전히 대입된 타입은 일치해야)매개변
extends로 대입할 수 있는 타입을 제한인터페이스인 경우에도 extends를 사용타입 변수에 대입은 인스턴스 별로 다르게 가능static멤버에 타입 변수(T) 사용 불가배열 생성할 때 타입 변수 사용불가. 타입 변수로 배열 선언은 가능new연산자 뒤에 T를 사용할
메타 애너테이션은 '애너테이션을 위한 애너테이션'메타 애너테이션은 java.lang.annotation패키지에 포함애너테이션을 만들 때 사용애너테이션을 정의할 때, 적용대상 지정에 사용<@Target 애너테이션의 예>@interface MyAnnotation :
프로세스 : 실행중인 프로그램, 자원(resource)과 쓰레드로 구성쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.프로세스 : 쓰레드 = 공장 : 일꾼싱글 쓰레드 프로세스 = 자원 + 쓰레드멀티 쓰레드 프로세스
main메서드의 코드를 수행하는 쓰레드쓰레드는 '사용자 쓰레드'와 '데몬 쓰레드' 두 종류가 있다.실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.지금까지는 main쓰레드 하나만 실행했기 때문에 main쓰레드가 없으면 종료되었지만, 멀티 쓰레드를 통해 r
일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행일반 쓰레드가 모두 종료되면 자동적으로 종료된다.가비지 컬렉터, 자동저장, 화면 자동갱신 등에 사용된다.무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고
쓰레드의 실행을 일시정지, 재개, 완전정지 시킨다.suspend(), resume(), stop()은 교착상태에 빠지기 쉬워서 deprecated되었다.그래서 쓰레드 클래스에 정의된 suspend(), resume(), stop()을 사용하지 않고 직접 작성해서 사용한
문자열을 숫자로 변환하는 다양한 방법n진법의 문자열을 숫자로 변환하는 방법각각 2진수 / 8진수 / 16진수로 변환해라.JDK1.5이전에는 기본형과 참조형간의 연산이 불가능기본형 int를 래퍼 클래스 Integer로 바꿔주는 것 = 오토박싱(= 자동으로 변환)래퍼 클래
ch 10-4~5 Calendar예제(1) Calendar클래스 - 예제2,3 > * set()으로 날짜와 시간지정하기 날자 지정하는 방법. 월(MONTH)이 0부터 시작한다는 점에 주의 배열을 이용하기 때문에 0부터 시작한다. 시간 지정하는 방법. clear(
멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다.진행중인 작업이 다른 쓰레드에게 간섭받지 않게 하려면 '동기화'가 필요쓰레드의 동기화 - 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하게 막는 것동기화하려면 간섭받지 않아야 하는 문장들을
Java = OOP(객체지향)언어 + 함수형언어(JDK1.8부터)함수(메서드)를 간단한 '식'(expression)으로 표현하는 방법익명 함수(이름이 없는 함수, annomymous function)함수와 메서드의 차이근본적으로는 동일. 함수는 일반적 용어, 메서드는
자주 사용되는 다양한 함수형 인터페이스를 제공.표준을 제공해준다는 장점이 있다.Q.아래의 빈 칸에 알맞은 함수형 인터페이스(java.util.function패키지)를 적으시오.매개변수가 2개인 함수형 인터페이스매개변수의 타입과 반환타입이 일치하는 함수형 인터페이스Una
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스Comparable : 기본 정렬기준을 구현하는데 사용.Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용Comparator와 Comparable는 두 대상을 비교한다는 점에서 공통
하나의 메서드만 호출하는 람다식은 '메서드 참조'로 간단히 할 수 있다.메서드 참조 = 클래스이름::메서드이름static메서드 참조↓↓생성자와 메서드 참조↓↓배열과 메서드 참조다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것데이터 소스 = 컬렉션, 배열스트림으로
Collection인터페이스의 stream()으로 컬렉션을 스트림으로 변환객체 배열로부터 생성하기기본형 배열로부터 스트림 생성하기난수를 요소로 갖는 스트림 생성하기지정된 범위의 난수를 요소로 갖는 스트림을 생성하는 메서드(Random클래스)특정 범위의 정수를 요소로 갖
스트림 자르기 - skip(), limit()스트림의 요소 걸러내기 - filter(), distinct()스트림 정렬하기 - sorted()Comparator의 cmparing()으로 정렬 기준을 제공sorted()는 매개변수로 Comparator를 필요로 한다.추가
T타입 객체의 래퍼클래스 - Optional< T >Object result = getResult()의 값은 null 혹은 객체null을 직접 다루는 것은 위험하다.(NullPointerException 발생 위험이 있다.) 그래서 간접적으로 null을 다루기 위
collect()는 Collector를 매개변수로 하는 스트림의 최종연산reduce() = 전체 리듀싱collect() = 그룹별 리듀싱Collector는 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스Collectors클래스는 다양한 기능의 컬렉터(Co