자바의 기본 확장자는 java
이다. 첫 클래스 이름과 실제 파일명은 동일해야하며 대소문자를 구분하며, 일반적으로 첫 글자는 대문자로 시작한다.
기본적으로 아래와 같은 구조를 갖는다.
//Example.java 파일 class Example { 속성; 메소드() ... }
자바는 먼저 컴파일을 거친다. 컴파일 과정에서 문법적 오류를 확인하고 바이트코드로 변환하게 된다.
컴파일
$ javac Example.java
컴파일 결과로 파일이름.class 가 생성된다.
실행
$ java Example
가장 기본적인 Hello World를 출력하는 예는 아래와 같다.
class Example { //실행을 위한 시작 메소드(메인메소드) public static void main(String []args) { //화면에 출력하기 System.out.println("안녕하세요"); } }
자바의 문법적 특징
문법적 특징은 아니지만, 별 두개로 시작하는 주석은 javadoc 으로 컴파일해주면 HTML 포맷으로 주석 내용을 문서로 생성해준다.
/** * @author Firstname Lastname <address@example.com> * @version 1.6 * @since 1.2 */ public class Test { // class body }
명명규칙
클래스명, 메소드명, 변수명은 개발자가 지정하는데, 앞서 이야기했던 것처럼 클래스명의 첫 글자는 대문자로 시작한다. 메소드와 변수명은 소문자로 시작하며, 상수는 다른 언어와 마찬가지로 대문자로 표기하는 것이 일반적이다.
첫 글자는 영문자, _(언더바), $ 와 한글도 가능하지만, 숫자는 사용할 수 없고, 두번째 글자부터는 숫자도 가능하다. 길이제한은 없으나, 예약어(keyword)는 사용할 수 없다. 유니코드도 지원한다.
변수
변수는 두 가지로 나뉘어 진다.
① Primitive Type (기본형)
- 정수형 byte(1), short(2), int(4), long(8)
- 실수형 float(4), double(8)
- 문자형 char(2)
- 논리형 boolean true, false - C에서는 0과 1로도 나타낼 수 있었지만 JAVA는 허용안됨
② Object Type (객체형)
기본형을 제외한 모든 타입이 해당된다.
String 형의 경우, 첫글자가 대문자이므로!! String 도 클래스다. 따라서 오브젝트 타입임을 예상할 수 있다.
비트연산자
| 와 || 는 주의할 필요가 있다.
|는 주기가 긴 연산자라 A | B 이면 A 와 B 모두를 실행한다.
||는 주기가 짧은 연산자가 A || B 이면 A가 참일 경우 B는 실행하지 않는다.
& 와 && 의 차이도 마찬가지이다. 앞이 거짓이어도 & 는 뒤에 것을 실행한다.
^ 는 양쪽이 같으면 false, 다르면 true
연결연산자의 특징
5 + 'a' 의 결과는 조금 재미있다.
5는 int 형이고 a는 char이므로 int가 더 큰 관계로 더할 경우 숫자연산으로 a의 코드값을 5개 더하는 결과를 얻게 된다.
변수 크기 비교 및 형변환
byte < short, char < int < long < float < double
boolean과 String은 형변환이 안된다.
두 가지 타입의 상이한 변수를 연산하면 더 기본형의 크기가 큰 변수로 통일된다.
따라서 결과값을 대입할 변수의 변수형에 유의해야 한다.
또, byte 등 작은 크기의 변수형끼리 연산을 하면 결과값은 자동으로 int 형으로 변환되므로 주의해야 한다.