티스토리 뷰

모든 프로그램의 시작은 역사깊은 Hello World 찍기이다.

이것만 성공하면 우선 50%는 성공했다고 볼수있다.


우선 Hello World를 찍기전에 자바 소스 파일의 구조를 알아보겠다.

자바 소스는 일반적인 텍스트 파일이며 확장자가 .java로 끝난다.

그리고 자바 컴파일러에의해 class파일로 변환된다.


자바 컴파일러에 의해 변환되는 과정중에 문법상의 오류가 있다면 컴파일이 되지 않고 에러를 알려준다.

컴파일시 에러발견은 생산성( 작업속도? )면에서 큰 장점인것같다.


소스의 최상단에는 이소스가 어디에 소속되어 있나 알려주는 package

그 다음은 이소스파일 구동에 필요한 외부 도구(라이브러리)들의 참조위치를 지정해주는 import

그 다음에 이소스파일의 타입이 클레스인지 인터페이스인지, 추상클레스인지 지정해주고 실제 기능을 정의하는 본문(? 그냥 명칭정하기가 애매하니) 이있다.


우선 package는 같은 기능을하는 소스파일의 묶음이 위치한 곳의 폴더경로라고 보면된다.


예를 들어 

package java.util;

이라는 package가 있다면 java폴더 아래 util이라는 폴더 속에 속한 소스라는 뜻이다.

만약 패키지에 적힌 경로와 실제 폴더 경로가 다르면 컴파일이 되지 않는다.


다음으로 import는 외부 or 다른 소스에 있는 기능을 사용할때 

해당 기능이 들어있는 클레스나 인터페이스의 참조 가능한 경로를 지정해주는 부분이다.


그리고 가장 기본이 되는 본문은 접근제한자 타입 이름{} 의 구조로 되어있다.

예를 들면

public class HelloWorld{

}


위와같은 형식이다 앞에 public이 접근 제한자, class가 타입 HelloWorld가 이름 이며

접근제한자에는 

default(접근 제한자 생략) : 타입앞에 아무것도 적지 않는다. 같은 패키지 내에서 참조가 가능하다.

public : 어느곳에 있는 객체든 접근이 가능하다.

protected : 해당 클레스나 인터페이스를 상속받은 객체 내에서만 접근이 가능하다.

private : 해당 클레스내에서만 접근이 가능하다.

가 있으며


지정할수 있는 타입으로는 크게

class : 정의한 기능을 구현하여 모아둔 곳으로, 객체를 생성하여 해당 클레스 내의 메서드를 사용할수 있다.

abstract class : 클레스간의 공통된 기능을 정의하고, 다른 기능은 추상화 하는 클레스이다.

interface : 클레스간의 공통된 기능을 추상화하여 정의만 한곳으로, 내부에는 메서드만 존재한다. 8부터는 interface내에 멤버변수나 기능 정의도 가능한것같다. 기존의 interface의 의미가 퇴색되는듯한?

enum : 열거형 타입으로 솔직히 써본적이 아직도 없다;;; 

이 있다.


타입의 이름은 파일명과 같아야하며 첫글자는 대문자로 한다.

(당연한 얘기지만 대소문자 구분을 정확히 해야한다)


위 내용은 개인적으로 그래도 이정도는 알아야 할것같아 적은부분이고 상세한 사항은 역시나

구글검색에 검색을 해보면 상세하게 설명한 분들이 많이있다.


이제 드디어 소스파일을 작성해 보자!!!!!!!!!


간단하게 

아무곳이나 폴더를 만들고

메모장을 열어 아래와 같이 입력하고 HelloWorld.java파일로 저장을하한다.

(ex: d:에 java라는 폴더를 만들어 작업함)



그럼 아래처럼 파일이 생기고 cmd창을 열어 해당 폴더로 이동후 javac HelloWorld.java 라고 입력하고 엔터를 친다.



그럼 아래처럼 HelloWorld.class 파일이 생긴것을 볼 수있다.



그다음 cmd창에 java HelloWorld를 입력하면 HelloWorld 가 출력되는것을 볼수있다.



자세한 설명은 다음에 차근차근


댓글