자바의 특징
운영체제에 독립적임
프로그램은 운영체제나 하드웨어가 아닌 JVM과 통신
→ JVM은 운영체제에게 변환하여 전달
객체지향언어임
상속, 캡슐화, 다양성이 잘 적용됨
비교적 배우기 쉬움
연산자, 기본구문 from C++, 객체지향관련 from smalltalk
자동 메모리 관리
따로 메모리 관리 필요성이 없음
네트워크와 분산처리 지원
Java API를 통해 쉽게 네트워크 관련 프로그램 개발 가능
멀티 쓰레드 지원
시스템과 관계 없이 구현 가능하며, 관련 라이브러리 제공.
→ 스케쥴링을 자바 인터프리터가 담당
동적 로딩 지원
여러 개의 클래스는 실행 시가 아니라 필요한 시점에 로딩
일부 클래스가 변경되어도 전체 애플리케이션 재 컴파일 필요 없음
일반 애플리케이션
Java 애플리케이션
주요 실행 파일들
주의점
모든 코드는 반드시 클래스 안에 존재해야 함
class 클래스이름 { // w/ public class: 소스 파일을 클래스 이름과 동일하게 해야 함
public static void main(String[] args) // main 메서드의 선언부
{
// 실행될 문장들
}
}
괄호: 메서드의 시작과 끝
하나의 소스파일에 하나의 클래스만을 정의하는 것이 보통 → 둘 이상도 가능
소스 파일의 이름은 public class의 이름과 일치 해야 한다
→ 소스 파일 내에 public class가 없을 때?
→ 소스 파일의 이름은 어떤 클래스의 이름도 상관없음
대표적 예시들
cannot find symbol 또는 cannot resolve symbol
변수나 메서드가 선언되지 않았거나, 그 이름을 잘못 사용한 경우
‘;’ expected
모든 문장의 끝에 붙여야 할 ‘;’ 가 없음
Exception in thread “main” java.lang.NoSuchMethodError: main
main 메서드가 없거나 입력 시 잘못되어 인식하지 못할 때
Exception in thread “main” java.lang.NoClassDefFoundError: 클래스명
클래스를 인식하지 못할 때 → 이상이 없다면 클래스패스의 설정 재확인
illegal start of expression
문법적 오류
class, interface, or enum expected
키워드가 없다는 뜻이나, 괄호가 짝이 맞지 않는 경우
에러 발생 시 순서도
내부적 진행 순서
주석의 역할
주석의 종류
연습문제
남궁성. "자바를 시작하기 전에." Java의 정석. 도우, 2016.