자바 프로그램의 작서에 있어 가장 기본적이면서도 주요한 것은, 클래스를 만들고, 그 안에변수, 상수, 함수(메소드) 등 모든 프로그램 요소를 작성한다는 점이다. 클래스 바깥에 어떤 것도 작성해서는 안 된다.
클래스 이름의 첫 번째 문자는 대문자로 시작하고, 여러 단어가 복합되면 각 단어의 첫 번째 문자만 대문자로 표시한다.
public class Hello {
...
}
public class HelloWorld {
...
}
주석문은 프로그램의 실행에 영향을 미치지 않으며, 프로그램에 대한 설명이나 특이사항 등을 자유롭게 기록하기 위해 사용한다.
// 한 라인 주석, 행이 끝날 때까지 주서그로 처리
/*
여러 라인 주석으로 /*와 */로 구성
....
*/
자바 프로그램은 다음과 같은 형식의 main() 메소드에서부터 실행을 시작한다.
public static void main(String[] args) {
...
}
main()은 반드시 public, static, void 타입으로 선언되어야 하며, 한 클래스에 2개 이상의 main()을 작성하면 안 된다. 자바 응용프로그램이 여러 클래스로 이루어지는 경우, 실행을 시작할 클래스에만 main()을 두면 되므로, 모든 클래스가 main()을 가지지는 않는다.
클래스의 멤버 함수를 자바에서는 메소드(method)라고 부른다. 메소드의 이름은 개발자가 지정하며, 메소드 개수에는 제한이 없다. 메소드 작성이나 호출 방법은 기본적으로 C/C++의 함수와 같다. 다음은 메소드 sum()을 작성한 코드이다.
public static int sum(int n, int m) { // 매개변수 n,m
return n + m; // n과 m의 합 리턴
}
다음은 메소드 sum()을 호출하는 코드이다.
int i = 20;
s = sum(i,10);
메소드 이름의 첫 번째 문자는 소문자로 표기하고 이후 각 단어의 첫 번째 문자만 대문자로 표기한다.
public int getAge() {
return 20;
}
변수(variable)란 프로그램 실행 동안 데이터를 저장하는 공간으로 개발자가 이름을 붙인다. 메소드 내에 선언되어 사용되는 변수를 지역변수(local variable)라고 한다. 지역변수는 메소드 내에서만 사용되며, 메소드의 실행이 끝나면 소멸된다.
char a;
int i = 20; // 변수 i의 선언과 동시에 20으로 초기화
변수 이름의 첫 단어는 소문자로 표기하고 이후 각 단어의 첫 번째 문자만 대문자로 표기한다. 이렇게 함으로써, 변수와 클래스를 쉽게 구분할 수 있다.
int myAge;
boolean isSingle;
정수, 문자, 문자열 등 프로그램에서 사용하는 데이터를 화면에 출력하기 위해 System.out.println()이나 System.out.print()를 사용하면 된다.
System.out.println() => 출력 후 다음 행으로 이동
System.out.print() => 출력 후 다음 줄로 넘어가지 않음
식별자(identifier)란 클래스, 변수, 상수, 메소드 등에 붙이는 이름을 말한다.
식별자로 사용할 수 있는 예시
int name;
char student_ID; // '_' 사용 가능
void $func() { } // '$' 사용 가능
class Monster3 { } // 숫자 사용 가능
int whatsYourNameMyNameIs; // 길이 제한 없음
int barChart; int barchart; // 대소문자 구분
int 가격; // 한글 식별자 사용 가능
식별자로 사용할 수 없는 예시
int 3Chapter; // 첫 번째 문자로 숫자 사용 불가
class if { } // 자바의 예야거 if 사용 불가
char false; // 자바의 예약어 false 사용 불가
void null() { } // 자바의 예약어 null 사용 불가
class %calc{ } // 특수문자 '%' 사용 불가
데이터 타입이란 자바에서 다룰 수 있는 데이터의 종류를 말한다. 자바 언어는 다음과 같이 총 9개 타입의 데이터를 다룰 수 있다.
레퍼런스 타입은 한 가지이지만 용도는 3가지이다.
레퍼런스란 C/++의 포인터와 비슷한 개념이다. 그러나 C/C++와 달리 실제 주소 값을 가지지 않는다. '배열에 대한 레퍼런스'는 배열에 대한 주소 값 정도로, '클래스에 대한 레퍼런스'는 개게ㅔ 대한 주소 값 정도로 생각하면 좋다.
정수를 저장하는 타입은 byte, short, int, long의 4개이고, 실수는 float, double의 두 타입을 사용한다. 타입마다 크기가 다르기 때문에 다루는 값의 범위에 따라 적절한 타입을 선택해야 한다.

위 그림은 자바의 기본 타입과 메모리 공간, 데이터 값의 범위를 보여준다.
자바에서 문자열은 기본 타입에 속하지 않으며, 다음과 같이 JDK에서 제공하는 String 클래스를 이용한다.
String toolName = "JAVA";
자바에서는 다음과 같이 문자열과 기본 타입의 + 연산이 실행되면, 기본 타입의 값이 문자열로 바뀌고 두 문자열이 연결된 새로운 문자열이 생성된다.
toolName + 1.8 => "JDK1.8"
"(" + 3 + "," + 5 + ")" => "(3,5)"
System.out.println(toolName + "이 출시됨"); // "JDK1.8이 출시됨" 출력
리터럴이란 프로그램에 직접 표현한 값을 말한다. 정수, 실수, 문자, 논리, 문자열 타입 모두 리터럴이 있으며, 예를 들면 다음과 같다.
34, 42,195, '%', true, "hello"

정수 리터럴은 위 사진과 같이 4가지 유형이 있으며 변수와 함께 사용하면 다음과 같다.
int n = 15; // 십진수 15
int m = 015; // 015는 8진수로서 십진수 13
int k = 0x15; // 0x15는 16진수로서 십진수 21
int b = 0b0101; // 0b0101은 2진수로서 십진수 5
정수 리터럴은 int 타입으로 자동 컴파일된다. 만일 long 타입으로 지정하려면 숫자 뒤에 L 또는 1을 붙이면 된다. 예를 들면 다음과 같다.
long g = 24L; // 24L은 241과 동일
실수 리터럴은 소수점 형태나 지수 형태로 다음과 같이 실수를 표현한 값이다.
- 12.0 .1234 0.1234 1234E-4
실수 리터럴은 double 타입으로 자동 처리되며, 변수와 함께 쓰면 다음과 같다.
double d = 0.1234;
double e = 1234E-4; // 1234E-4 = 1234x10의 -4승이므로 0.1234와 동일
숫자 뒤에 f나 F를 붙이면 float, d나 D를 붙이면 double 타입으로 가제 변환할 수 있다.
float f = 0.1234f; // f = 0.1234로 하면 컴파일 오류
double w = .1234D; // .1234D와 .1234는 동일
상수를 만드는 방법은 변수 선언 시 final 키워드를 사용하면 된다. 상수는 변수ㅘ 달리 실행 중에 값을 바꿀 수 없다.

위 사진은 원주율 3.141592 값을 가진 상수 PI를 선언한 사례이다.
상수 PI를 선언한 것처럼 상수 이름은 전체를 대문자로 표기하도록 권장한다.
참고
명품 JAVA Programming 귀로 배우는 자바가 아니라 눈으로 몸으로 배우는 자바강좌