소스파일 - 프로그래밍 언어로 작성한 파일 컴파일 - 0과 1로 이루어진 기계어 파일로 번역 자바 특징 운영체제에 독립적(이식성이 높음) 객체 지향 프로그래밍(OOP: Object-Oriented Progamming) - 객체(부품)를 만들고, 이 객체들을 서로 연
기본타입 정수타입: byte, char, short, int, long 실수타입: float, double 논리타입: boolean 리터럴(literal) - 소스 코드에서 프로그래머에 의해 직업 입력된 값 int i = 11; //11이 리터럴 정수 리터럴 👩
타입 변환 byte a = 10; //byte 타입 변수 a에 10을 저장 int b = a; //byte 타입 변수 a에 저장된 10을 int 타입 변수 b에 복사해서 저장 자동 타입 변환 큰 허용 범위 타입 = 작은 허용 범위 타입 기본 타입을 허용 범위 크기순
표준 입력 System.in.read(); -System.in: 시스템의 표준 입력장치 표준 출력 System.out.println(); -System.out: 시스템의 표준 출력 장치 -System.:시스템이 가지고 있는 -out.:출력 장치로 -println(
연산자(operator): 연산의 종류를 결정짓는 기호 피연산자(operand): 연산식에서 연산되는 데이터(값) \- 연산자종류 산술 - (+, -, \*, /, %, ···) 증감 - (++, --, ···) 논리 - (&&, ||, ···) 대입 - (=, +=,
if(조건식) {조건식 ture실행문A;}실행문B;① 조건식이 true이면 실행문A → 실행문B 실행② 조건식이 false이면 실행문B 실행\- 조건식이 true가 될때 실행해야할 문장이 하나밖에 없다면 생략가능표현법 if(조건식) 실행문;if(조건식) {조건식 tur
for(초기화식; 조건식; 증감식){실행문;} ① for문 처음 실행 시, 초기화식이 제일 먼저 실행② 조건식을 평가해서 true이면 for문 블록 내부의 실행문을 실행, false이면 for문 블록을 실행하지 않고 종료③ 블록 내부의 실행문들이 모두 실행되면 증감식을
\- 번지를 통해 객체를 참조함\- 배열, 열거, 클래스, 인터페이스를 말함\* 기본 타입 vs 참조 타입\- 차이점: 저장되는 값· 기본 타입(byte, char, short, int, long, float, double, boolean)→ 실제 값을 변수 안에 저장
✔️배열 : 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조 : 인덱스는 0부터 시작함 \- 특징 같은 타입의 데이터만 저장할 수 있음 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없음 \- 배열선언 [형식1] 타입[] 변수
✔️열거타입 : 한정된 값인 열거 상수(enumeration constant)중에서 하나의 상수를 저장하는 타입 \- 열거 타입 선언 열거 타입의 이름 정하기 해당 이름으로 소스파일(.java)을 생성하기 열거 타입 이름은 첫 글자를 대문자로 하고 나머지는 소문자로
객체(object) : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것 : 속성(필드 field)과 동작(메소드 method)으로 구성되어 있음 : 객체 모델링(object modeling) - 객체를 소프트웨어
필드(Field) : 객체의 고유 데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳 : 클래스의 멤버 변수라고 부르기도 함 필드 선언 : 클래스 중괄호 {} 블록 어디서든 존재가능 : 생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선
✔ 생성자(Constructor) \- new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당 \- 객체 초기화: 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것 \- 생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없음
리턴타입 메소드이름 ( 매개변수선언, ···) { 실행할 코드를 작성하는 곳}\- 리턴 타입: 메소드가 리턴하는 결과의 타입을 표시함\- 메소드 이름: 메소드의 기능이 드러나도록 식별자 규칙에 맞게 이름을 지어줘야함\- 매개 변수 선언: 메소드를 실행할 때 필요한
✔️ 인스턴스 멤버와 this ✔️ 인스턴스 멤버 : 인스턴스(instance)멤버란 객체(인스턴스)를 생성한 후    사용할 수 있는 필드(인스턴스 필드)와 메소드(인스턴스 메소드) : 인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에  &
✔️ 패키지(package) : 물리적인 형태는 파일 시스템의 폴더임 : 단순히 파일 시스템의 폴더 기능만 하는 것이 아니라 클래스의 일부분으로,    클래스를 유일하게 만들어주는 식별자 역할도 함 : 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래
class 자식클래스 extends 부모클래스 { //필드 //생성자 //메소드}\- 상속 특징1\. 여러 개의 부모 클래스를 상속할 수 없음, extends 뒤에는 단 하나의 부모 클래스만 와야 함2\. 부모 클래스에서 private 접근 제
\- 타입 변환: 타입을 다른 타입으로 변환하는 행위: 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생: 자식은 부모 타입으로 자동 타입 변환이 가능함\- 자동 타입 변환부모타입 변수 = 자식타입;: 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것: 자
실체 클래스 : 객체를 직접 생성할 수 있는 클래스추상 클래스 : 실체 클래스들의 공통적인 특성을 추출해서 선언한 클래스→ 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있음→ 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모
✔️ 인터페이스 : 개발 코드와 객체가 서로 통신하는 접점 역할 : 하나의 객체가 아니라 여러 객체들과 사용이 가능 : 개발 코드 측면에서는 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가짐 : 개발 코드가 인터페이스의 메소드를 호출하면 인터
: 프로그램 소스 코드는 변함이 없는데, 구현 객체를 교체함으로써 프로그램의 실행결과가 다양해짐: I 인터페이스를 이용해서 프로그램을 개발함: I 인터페이스를 구현한 클래스로 처음에는 A 클래스를 선택했는데, 테스트해보니 A 클래스에 문제가 있다는 것을 알게
일반적인 경우상속class 클래스이름1 extends 부모클래스 { ··· }부모클래스 변수 = new 클래스이름1();→ 부모 클래스 변수는 클래스1의 객체를 참조구현 class 클래스이름2 implements 인터페이스 { ··· }인터페이스 변수 = new 클래스
\- try-catch-finally 블록: 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해줌: Class.forName() 메소드는 매개값으로 주어진 클래스가 존재하면 Class객체를 리턴하지만,
: 자바 프로그램의 기본적인 클래스를 담고 있는 패키지: java.lang 패키지에 있는 클래스와 인터페이스는 import 없이 사용할 수 있음• java.lang 패키지에 속하는 주요 클래스 와 간략한 용도\- API(Application Programming Int
public boolean equals(Object obj) { ··· }: equals() 메소드의 매개 타입은 Object인데,이것은 모든 객체가 매개값으로 대입될 수 있음을 말함→ 왜냐하면 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문: Obj
: 객체를 식별하는 하나의 정수값: Object 클래스의 hashCode() 메소드는객체의 메모리 번지를 이용해서 해시코드를 만들어리턴하기 때문에 객체마다 다른 값을 가지고 있음: 논리적 동등 비교 시 hashCoe()를 오버라이딩할 필요가 있음컬렉션 프레임워크에서 H
: 객체의 문자 정보를 리턴함: 객체의 문자 정보란 객체를 문자열로 표현한 값: 기본적으로 Object 클래스의 toString() 메소드는'클래스이름@16진수해시코드'로 구성된 문자 정보를 리턴함: Object의 toString() 메소드의 리턴값은자바 애플리케이션에
: 자바 프로그램은 운영체제에서 바로 실행되는 것이 아니라JVM위에서 실행됨: java.lang 패키지에 속하는 System 클래스를 이용하면운영체제의 일부 기능을 이용할 수 있음즉, 프로그램 종료, 키보드로부터 입력, 모니터로 출력, 현재 시간 읽기등이 가능함: Sy
: 클래스와 인터페이스의 메타 데이터를java.lang 패키지에 소속된 Class 클래스로 관리함메타 데이터란?: 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보를 말함1) 클래스로부터 얻는 방법① Class clazz = 클래스이름.class② Class cl
: 문자열은 java.lang 패키지의 String 클래스의 인스턴스로 관리됨: 소스상에서 문자열 리터럴은 String 객체로 자동 생성되지만String 클래스의 다양한 생성자를 이용해서직접 String 객체를 생성할 수도 있음: 어떤 생성자를 이용해서 String 객
: 자바는 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을갖는 객체를 생성할 수 있음 → 이런 객체를 포장(Wrapper) 객체라고 함→ 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문· 포장 객
: java.lang.Math 클래스는수학 계산에 사용할 수 있는 메소드를 제공함: Math 클래스가 제공하는 메소드는모두 정적 메소드이므로Math 클래스로 바로 사용 가능\- round() 메소드: 항상 소수점 첫째 자리에서 반올림해서 정수값을 리턴\- Math.ra
Date now = new Date();: 특정 시점의 날짜를 표현하는 클래스: Date 객체 안에는 특정 시점의 연도, 월, 일, 시간 정보가 저장됨: Date는 객체 간의 날짜 정보를 주고받을 때 매개 변수나 리턴 타입으로 주로 사용됨SimpleDateFormat
: 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 함: 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아애플리케이션의 코드를 실행하는 것: 하나의 애플리케이션은 멀티 프로세스(multi process)를만들기도 함: 사전적 의미
: 스레드 객체를 생성하고 start() 메소드를 호출하면바로 실행되는 것이 아니라 실행 대기 상태가 됨: 실행대기 상태란 언제든지 실행할 준비가 되어 있는 상태를 말함: 운영체제는 실행 대기 상태에 있는 스레드 중에서 하나를 선택해서 실행 상태로 만듦: 실행 상태의
: 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드: 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료되는데,그 이유는 주 스레드의 보조 역할을 수행하므로주 스레드가 종료되면 데몬 스레드의 존재 의미가 사라지기 때문이 점을 제외하면 데몬 스레드는 일반
: 자료구조(Data Structure)를 사용해서 객체들을 효율적으로추가, 삭제, 검색할 수 있또록 인터페이스와 구현 클래스를java.util 패키지에서 제공함 이들을 총칭한 것: 컬렉션(Collection) - 객체의 저장: 프레임워크(Frame) - 사용 방법을
: 배열과 비슷하게 객체를 인덱스로 관리함\- 배열과 차이점: 저장 용량이 자동으로 증가: 객체를 저장할 때 자동 인덱스가 부여됨: 추가, 삭제, 검색을 위한 다양한 메소드들이 제공됨: 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조함→ 그렇기 때문에 동일한 객체
: List 컬렉션은 객체의 저장 순서를 유지할 수 있지만Set 컬렉션은 저장 순서가 유지되지 않음그리고 객체를 중복해서 저장할 수 없고,하나의 null만 저장할 수 있음: Set 컬렉션은 = 수학의 집합과 비슷함 → 집합은 순서와 상관없고 중복이 허용되지 않
: 키(key)와 값(value)으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고 있음: Entry는 Map 인터페이스 내부에 선언된 중첩 인터페이스임여기서 키와 값은 모두 객체임: 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있음만약 기존에 저장된 키
\- LIFO(Last In First Out): 나중에 넣은 객체가 먼저 빠져나가는 구조\- FIFO(First In First Out): 먼저 넣은 객체가 먼저 빠져나가는 자료구조→ 컬렉션 프레임워크에는LIFO(리포) 자료구조를 제공하는 Stack 클래스와FIFO(