자바의 특징
1. 운영체제에 독립적이다.
2. 객체지향 언어
3. 비교적 배우기 쉽다.
4. 자동 메모리 관리(Garbage Collection)
5. 네트워크와 분산처리를 지원한다.
6. 멀티쓰레드를 지원한다.
7. 동적로딩을 지원한다.
JVM - Java Virtual Machine
자바를 실행하기 위한 가상 컴퓨터
Java의 속도
일반 애플리케이션 코드는 OS만 거치고 하드웨어로 전달되지만 Java애플리케이션은 JVM을 한번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점이 있다.
하지만 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해 주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.
Java API 문서
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
Java 관련 여러가지 내용
https://docs.oracle.com/javase/8/docs
Java Platform Standard Edition 8 Documentation
<!-- commenting out JDK 7-specific links; will replace with corresponding JDK 8 links as we get closer What's New in Documentation This section will contain information about new features in the Java platform. -->
docs.oracle.com
클래스를 작성하는 방법
class 클래스이름 {
/*
주석을 제외한 모든 코드는 클래스의 블럭{} 내에 작성해야한다.
*/
}
main메서드의 선언부
class 클래스이름{
public static void main(String[] args) // main메서드의 선언부
{
// 실행될 문장들을 적는다.
}
}
'public static void main(String [] args)는 main메서드의 선언부이다. 프로그램을 실행할 때 java.exe에 의해 호출될 수 있도록 미리 약속된 부분이다. 항상 똑같이 작성해주어야 한다.
주석
1. 범위 주석 /* 내용 */ 사이의 내용은 주석으로 간주된다.
2. 한줄 주석 // 내용
처음부터 그 라인 끝까지의 내용은 주석으로 간주된다.
남이 작성하거나 심지어 내가 작성한 코드들도 이해하고 변경하는 것이 어려울 때가 있다. 이러한 어려움을 덜기 위해 사용하는 것이 바로 주석이다. 설명을 적절히 덧붙여놓거나 프로그램의 작성자, 작성일지, 버전, 변경이력 등의 정보를 제공할 목적으로도 사용된다.
System.out.println("Hello, /* 내용 */ world.");
System.out.println("Hello, world. // 내용");
주의할 점. 다음과 같이 문자열을 의미하는 큰따옴표("") 안에 주석이 있을 때는 주석이 아닌 문자열로 인식한다.
자주 발생하는 에러와 해결방법
1. Cannot find symbol 또는 cannot resolve symbol
- 지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자를 구분하기 때문에 철자뿐 아니라 대소문자의 일치여부도 꼼꼼히 살펴봐야 한다.
2. ';' expected
- 세미콜론이 필요한 곳에 없다는 뜻이다. 모든 문장의 끝에는 세미콜론을 붙여주어야 한다.
3. Exception in thread "main" java.lang.NoSuchMethodError: main
- main메서드를 찾을 수 없다는 뜻이다. 실제로 클래스 내에 main메서드가 존재하지 않거나, 메서드의 선언부에서 오타가 존재하는 경우에 발생한다.
4. Exception in thread "main" java.lang.NoClassDefFoundError: Hello
- Hello라는 클래스를 찾을 수 없다는 뜻이다. 클래스의 철자, 대소문자를 확인해 보고 이상이 없으면 클래스파일이 생성되었는 확인 한다. Hello.java가 정상적으로 컴파일되었다면 클래스파일 Hello.class가 있어야 한다. 클래스파일이 존재하는데도 동일한 메시지가 반복해서 나타나면 클래스패스(classpath)의 설정이 바르게 되었는지 확인한다.
5. illegal start of expression
- 문장의 앞부분이 문법에 맞지 않는다는 의미이다. 간단히 문법적 오류가 있다는 뜻이다. 에러가 발생한 곳에 들어가서 문법적인 부분을 확인해봐야 한다.
6. class, interface, or enum expected
- 보통 괄호의 개수가 일치하지 않는 경우에 발생한다. {} 괄호를 잘 확인해 보자.
에러가 발생했을 때 해결방법
1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다.
2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다. 대부분 에러는 사소한 것인 경우가 많다.
3. 의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트한다.
공부를 마치고
CHAPTER 1 은 어렵지 않은 내용이었다. 그동안 코딩하고 공부하면서 계속 봐왔던 것이기 때문에 익숙하다. 자바에 대하여 깊게 들어가기 전 워밍업이라고 생각해 두면 좋을 것 같다.
'Back-End > JAVA' 카테고리의 다른 글
[JAVA] 자바의 정석(기초편) 공부 - CHAPTER 3 . 연산자 (0) | 2023.05.31 |
---|---|
[JAVA] 자바의 정석(기초편) 공부 - CHAPTER 2 . 변수 (0) | 2023.05.31 |
[JAVA] 스파르타코딩클럽 JAVA공부(5) - 프로세스와 쓰레드, 우선순위 (0) | 2023.05.30 |
[JAVA] 스파르타코딩클럽 JAVA공부(4) - 오류 및 예외 (0) | 2023.05.26 |
[JAVA] 스파르타코딩클럽 JAVA공부(3) - 객체지향의 이해와 상속 (0) | 2023.05.26 |
남건욱's 공부기록