Work/Java

[Head First Java] 1_1. 언제 어디서나 시작은 "Hello Wordl!!!"

kevin. 2007. 7. 3. 10:32
  1. 자바 파일 안에는 어떤 것들이 있을까?
    1. import 선언문
      우리가 보통 자바 프로그램을 만든다고 할 때, 필요한 모든 기능을 직접 구현하지는 않는다.
      물론 직접 구현해서 만들수도 있겠으나, 그렇게 한다면 시간도 엄청 많이 걸릴 것이고.. 
      또 각 코드가 모두 올바르게 동작한다는 것을 보장하기 힘들다. (물론 모두 다 정확히 테스트 한다고 한다면 ..ㅡㅡ)
      따라서 이미 구현해 놓은 클래스들을 사용하게 되는데 이것들을 사용하겠다는 표시를 해주는 것이 import이다. 
      여기서 질문이 나올만 한 것들을 뽑아보자!
      • 저기요.. 그럼 import java.io.*; 하면 그 아래의 클래스가 소스 위에 철커덕 붙나요?
        아닙니다!! 이건 C가 아니고 자바랍니다. 
        import의 의미는 java.io 내부의 클래스를 사용하겠다는 선언적 의미에 불과합니다.
        이렇게 해놓으면 "java.io.쓰고자하는 메소드" 이렇게 전체 이름을 쓰지 않고 "쓰고자하는 메소드"를 바로 쓸 수 있죠..
      • 그렇다면 그냥 import * 이런식으로 다 선언하지 그래요?
        그렇담 편하겠지만 자바에서 package라는 것이 있습니다. 클래스를 구분해 주는 건데요..
        이것이 클래스 구분에도 사용되지만 (java.io, java.net, javax.swing 등...) 클래스 이름의 중복을 해결해 주기도 합니다.
        가령 javacore 라는 클래스가 두개가 있다고 가정합시다. 어디에 있냐면..
        하나는 java.io.javacore, 다른 하나는 javax.swing.javacore에 있습니다. 이때 다음과 같이 코드를 작성합니다.
        저 javacore는 java.io의 javacore일까요? 아니면 javax.swing의 javacore일까요?
        이 코드를 작성한 사람만이 알 수 있겠죠?.. 컴파일러는 구문을 그대로 해석하기 때문에 어떤걸 써야할지 알 수 없습니다.
        그래서 모든 패키지를 import해서 사용하지 않는 것입니다. 간단하죠~?

        1. import java.io.*;
          import javax.swing.*;

          public class MyClass {
          ......
          javacore jc = new javacore();
          ......
          }
        2.  
    2. 클래스
      클래스는 객체 생성을 위한 틀로서 다음의 것들을 가지고 있습니다.
      • 인스턴스 메소드와 인스턴스 변수, 정적 메소드, 정적 변수
        정적이라는 말과 인스턴스의 차이는 객체를 생성하여야만 접근 가능하면 인스턴스이고 객체 생성없이 클래스 네임으로 접근 가능하면 정적입니다.
        인스턴스* 은 객체 생성시마다 새롭게 생겨나지만, 정적* 은 그 클래스당 하나만 생성됩니다.
        더 쉽게 구분하자면 정적* 은 static 이 붙어있고, 그 외에는 모두 인스턴스* 로 보면 됩니다.
      • 메인 메소드 
        프로그램을 실행 시키기 위한 시작점입니다.
        메인 메소드는 아래와 같은 형식을 가지고 있는데, static이 붙어있으므로 정적 메소드입니다.
        나중에 자세히 다루겠지만 정적 메소드 내부에서는 정적 메소드가 아닌 메소드를 호출 할 수 없고, 정적 변수가 아닌 변수를 참조 할 수 없습니다. 아래 코드를 참조하십시오.
        1. public class MyClass {
               static String sName = "kevin";
               String mName = "armstrong";

               public static void printSPrompt() {
                    System.out.print("sName = ");
               }

               public void printMPrompt() {
                    System.out.print("mName = ");
               }

               public staitc void main(String[] args) {
                    printSPrompt();
                    System.out.println(sName);

                    printMPrompt(); // ① 
                    System.out.println(sName); // ②
               }


    3. 헬로 월드
      1. public class Hello {     
             public staitc void main(String[] args) {
                  System.out.println("Hello World!!!");
             }

        더 복잡한 코드를 위에 쓰고 헬로 월드는 맨 마지막에 넣어주는 센스~ ㅡ,.ㅡ;;

이 글은 스프링노트에서 작성되었습니다.