고급언어로 이루어진 소스코드를 작성 시 JAVA
컴파일시 .class 라는 바이트 코드가 생성된다.
클래스의 이름은 파일 이름과 같다.
1. 자바의 특징
- WORA
- 플랫폼의 독립적
- 객체지향
- 멀티스레드
- 소스(.java)와 클래스(.class)파일
- 실행 모듈 (한개의 CLASS 또는 다수의 CLASS 파일로 구성)
- main() 메소드 - 자바의 응용프로그램의 실행은 main() 메소드에서 시작
- 클래스로 캡슐화
- 패키지 - 관련된 여러 클래스를 패키지를 묶어 관리
- 가비지 컬렉션 존재(system.gc())
- 실시간 응용프로그램에 부적합
- 자바 프로그램은 안전
2. 식별자(Identifier)
클래스, 변수, 상수, 메소드에 붙이는 이름
- 식별자 원칙
특문, 공백, 탭 X
'-', '$', 사용가능
유니코드, 한글 가능
첫 문자로 숫자 불가
불린 리터널, 널 리터널 식별자 사용불가
길이제한 X
대소문자 구별한다.
3. 자바의 데이터 타입
- Default Type
boolean - 1
char - 2
byte - 1
short - 2
int - 4
long - 8
float - 4
double - 8
- Reference Type
Class에 대한 레퍼런스
interface에 대한 레퍼런스
array에 대한 레퍼런스
108 p
Compile 찾는 문장
for 문장의 결과값
Continue, Break 한문제
배열 생성방법, 길이 한문제
int a[] = new int[5];
int []a = new int[5];
int b[] = { 1,2,3 };
b.length;
new - 객체 생성 연산자
메소드 리턴타입 확인
public static void main(String args)
예외 처리하는 방법
Try - 예외 발생할 수 있을 문장을 명시
Catch - 예외가 발생했을 때 처리하는 문장
Finally - 생략가능, 반드시 실행해야하는 문장
4. 자주 발생하는 예외
ArithmeticException - 정수를 0으로 나눌때 발생
NullPointerException - NULL 레퍼런스를 참조할 때 발생
ClassCastException - 변환할 수 없는 타입으로 객체를 변환할 때 발생
OutOfMemoryError - 메모리가 부족한 경우 발생
ArrayIndexOutOfBoundsException - 배열의 범위를 벗어난 접근 시 발생
IllegalArgumentException - 잘못된 인자 전달 시 발생
IOException - 입출력 동작실패 또는 인터럽트 시 발생
NumberFormatException - 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생
5. 객체지향 언어
객체는 특성과 메소드로 구성되어있음
5.1 객체의 특성
- 캡슐화
객체를 캡슐로 싸 내부를 볼 수 없게함
- 상속성
내 특성과 메소드를 상속받은 클래스에서 재사용 가능하게 함
- 다형성
같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작
오버로딩 -
오버라이딩 -
객체지향언어는 순서에 상관하지 않는다.
객체를 만드는 틀을 클래스라고 한다.
[접근권한] [클래스선언] [클래스 이름]
변수(멤버, 필드, 속성)
메소드
메소드와 생성자를 구분하는 법은 클래스와 이름이 같은지를 살펴본다.
5.2 생성자의 특징
메서드형식
반환형을 가지지 않는다.
this - 나의 클래스를 가리키는것
super - 부모 클래스를 가리키는것
this.a <- 내 클래스의 변수 호출
this.b(); <- 내클래스의 메서드 호출
일반적으로 매개변수로 값이 전달됨
배열이나 객체를 매개변수로 사용시 주소가 전달됨
멤버 접근 지정자
PUBLIC - 모든 클래스
PROTECTED - 동일 패키지와 자식 패키지
DEFAULT - 동일 패키지
PRIVATE - 자기클래스만(완벽차단)
|
Private | Default |
Protected |
Public |
같은 패키지의 클래스 |
X |
O |
O |
O |
다른 패키지의 클래스 |
X |
X |
X |
O |
접근가능영역 |
클래스 내 |
동일 패키지 내 |
동일 패키지와 자식 클래스 |
모든 클래스 |
가비지 컬렉션
System.gc()
Static 멤버의 공간적, 시간적 특성
객체를 따로 생성하지 않고 [클래스명].[Static 변수]로 접근이 가능하다.
Final 클래스 - 상속불가
Final 메소드 - 오버라이딩 불가
Final 필드 - 상수설정