ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바를 소개합니다. ^^
    Programming/JAVA 2010. 5. 3. 08:04

     

    1. 자바는 어떤 식으로 돌아갈까??

    소스               ->             컴파일러             ->             결과물(코드)          ->          가상머신
    .java / 오류가 없는지 확인후 class파일생성 /   .class(컴파일된 코드) JVM을 통해   / .class파일을 실행시키고, 바이트코드를 해당 플랫폼에서 이해할수 있는 형태로  해석하여 프로그램을실행.

     

    2. 자바의 발전.

    * 오리지널 자바( 자바1 )

      - 자바 1.02 클래스 개수 : 250개   느림
        귀여운 이름과 로고를 달고 나왔고 재미있는 면이 많이 있었습니다. 버그도 많았죠. 무엇보다 애플릿(applet)을 만들기 위한 용도로 많이 쓰엿습니다.

        자바 1.1  클래스 개수 : 500개 약간 빠름
        기능도 다양해지고 더 친숙하게 바뀌었습니다. 이 때부터 인기를 끌기 시작했고 GUI 코드도 향상되었죠.

    *  자바2

      - 자바 2   (버전 1.2 ~ 1.4 이후) 클래스 개수 : 2,300개 훨씬 빠름

        정말 강력해 졌습니다. 심지어 네이티브 고유 코드와 거의 같은 속도로 실행되는 경우도 있습니다.

        J2ME, J2SE, J2EE 의 세 종료류 분리되어 나옵니다. 엔터프라이즈(주로 웹 기반) 및 모바일 어플리케이션의 주력 언어가 됐습니다.

    * 자바3라고 부르기 혼란스럽기 때문에 버전 1.5에서 5를 맞춰 자바 5.0이라고 부르게 되었음.

      - 자바 5.0 이상(버전 1.5이상) 클래스 개수 : 3,500 개 더 강력해 지고 개발하기 편해짐

        자바 .0("타이거") 에서는 천 개 이상의 클래스가 추가된 것 외에, 언어자체에도 많은 기능이 추가되었습니다. 프로그래머 입장에서는 (적어도 이론적으로는)

        개발하기가 편해지고, 다른 언어에서 많이 쓰이던 새로운 기능들이 추가되었습니다.


    3. 자바코드의 구조

    소스파일 안에는 클래스가 들어갑니다.   ex>    public class Dog{} - 클래스
    - 소스 코트파일(.java라는 확장자가 붙은 파일)에서는 클래스(class) 각각 한 개씩을 정의합니다.
       클래스는 보통 프로그램의 한 부분이라고 할 수 있지만 아주 작은 어플리케이션 중에는 클래스 단 하나만으로 이뤄진 것도 있습니다.
       클래스는 한 쌍의 중괄호 안에 들어가야 합니다.

       클래스에는 메소드가 들어갑니다.          ex>    public class Dog{   void bark(){} - 메소드   }
    - 메소드(method)가 한개 이상 들어갑니다.
       예를 들어, (개를 나타내는)Dog 클래스에는 (짓는 것을 의미하는) bark 라는 메소드가 들어갈 수 있으며,
       이 메소드에는 개가 짖는 방법을 지시하는 내용이 들어가면 될 것입니다.
       메소드는 클래스 안에서(즉, 클래스 전체를 감싸는 중괄호 안에서)선언해야 합니다.

    - 메소드에는 선언문이 들어갑니다.         ex>    public class Dog{ void bark(){ statement1;statement2; - 선언문 } }
    - 메소드를 감싸는 중괄호 안에는 메소드에서 처리할 일을 지시하는 내용이 들어갑니다.
       메소드 코드는 기본적으로 일련의선언문을 모아놓은 것이므로, 지금은 메소드를 일종의 함수나 프로시저와 비슷한 것으로 생각해도 됩니다.

    4. 자바에서는 모든것이 클래스 안에 들어간다.

       (.java 확장자가 붙어있는) 소스 코드 파일을 입력 한 다음 컴파일해서(.xlass 확장자가 붙어있는)

       새로운 클래스 파일을 만들면 도니다. 프로그램을 실행시킨다는 것은 사실 클래스를 실행시키는 것이라고 할 수 있다.

       프로그램을 실행시킨다는 것은 자바가상머신에서 클래스를 불러오고 그 main()메소드를 시작하라. 그리고 main()메소드에 있는 모든 코드가 실행될 때까지

       계속 실행시켜라는 뜻의 명령을 내리는 것입니다. - 실행절차가 시작되는 부분은 바로 main()메소드 입니다.

       프로그램이 아무리 커도 (프로그램에서 얼마나 많은 개수의 클래스를 사용하든 상관없이) 프로그램을 실행시키려면 반드시 main()메소드가 필요합니다.


    5. 컴파일러와 자바 가상머신 과연 어느 부분이 더 중요할까??
    - 아직까지 해결되지 않고 계속적으로 토론을 나누는 부분이다.
       자바가상머신은 컴파일된 프로그램을 실행시키기 위해 필요하며,
       컴파일러는 자바언어를 바이트코드로 변형시키기 위해서 필요하다.
       컴파일러가 없다면 바이트코드로 프로그램을 작성해야하기 때문에 자바가 발전하지 못했을것이다.

     

    6. 클래스를 해부하자!

       JVM 이 샐행되면 우선 사용자가 명령행에서 지정한 클래스를 살펴봅니다.
       그리고 나서 다음과 같은 특별한 메소드를 찾아봅니다.
       public static void main(String[] args){
        //코드가 들어갈 자리
       }
       이런 메소드를 찾으면 JVM에서는 main 메소드의 중괄호{}안에 잇는 것을 모두 실행시킴니다.
       모든 자바 어플리케이션에는 최소한 클래스 한 개가 있어야 하며 적어도 main 메소드 하나가 있어야합니다.
       (클래스마다 하나씩이 아니라 어플리케이션마다 하나씩 있어야 합니다.)

     

       public class MyFirstApp{
         public static void main(String[] args){
            System.out.print("I Rule!");
         }
      }

     public - 누구든지 접근 할 수 있도록 선언하는것
     class - 클래스임을 나타내는 부분
     MyFirstApp - 클래스의 이름
     { - 클래스의 시작을 나타내는 중괄호
     public
     static
     void - 리턴형식으로 void는 리턴 값이 없음을 의미합니다.
     main - 메소드의 이름
     (String[] args) - 메소드의 인자입니다. 이 메소드에는 String의 배열이 전달되며 그 배열에는 'args'라는 이름이 붙습니다.
     { - 메소드의 시작을 나타내는 중괄호
     System.out.print - 표준 출력(기본값은 명령행)으로 출력하라는 것을 의미합니다.
     ("I Rule!") - 출력할 String 값입니다.
     ; - 모든 선언문은 세미콜론(;)으로 끝나야 합니다.
     } - main 메소드의 끝을 나타내는 중괄호입니다.
     } - MyFirstApp 클래스의 끝을 나타내는 중괄호 입니다.

     

    7. MAIN 메소드란?

      대부분의 프로그래밍 언어에서 컴퓨터로 하여금 어떤 일을 하게 만드는 모든 일반직인 지시사항은 메소드안에 들어있습니다.

      코드에서는 JVM에 다음과 같은 것을 지시할수 있습니다.
    7.1. 뭐가를 하는 것

      선언문 : 선언, 대입, 메소드 호출 등

       int x= 3;

       String name = "Dirk";

       x= x*17;

       System.out.print("x는 "+ x +"입니다.");

       double d = Math.random();

       //한줄 주석사용법

       /*

       여러줄 주석사용법.

       */

     

    7.2.뭔가를 여러번 반복하는 것

      순환문 : for 와 while

      while(x >12){

         x = x-1;

      }

     

     for(int x=0;x<10;x=x+1){

    System.out.print("x의 값은 "+x+"입니다.");

      }

     

    7.3. 조건에 따라 뭔가를 하는 것

      분기문: if/else 테스트

      if(x==10) {   =>  조건에 따른 분기문

     System.out.print("x가 10이군요.");

      }else{

    System.out.print("x는 10이 아닙니다.");

      }

      if((x<3)&(name.equals("Dirk"))) {

    System.out.println("Gently");

      }

      System.out.print("이 선언문은 무조건 실행");

     

    8. 재미있는 몇가지 문법.

    • 모든 선언문은 세미콜론으로 끝나야 합니다.  x=x+1;
    • 한 행짜리 주석은 슬래시 두 개로 시작합니다.  x =22;   //  이행이 조금 이상한데.
    • 대부분의 경우에 공백은 큰 의미가 없습니다.   x                 =                   3             ;
    • 변수를 선언할 때는 이름과 유형(type)을 지정합니다.     int weight; // 형식 :int , 이름 : weight
    • 클래스와 메소드를 정의하는 부분은 한 쌍의 중괄호 안에 들어갑니다. public void go(){ //코드가 들어갈 자리  }

     

    9. while 순환문 핵심정리

    • 선언문은 세미콜론으로 끝나야 합니다.
    • 코드 블록은 중괄호 한 쌍에 의해 정의됩니다. { }
    • int 변수를 정의할 때 오른쪽과 같이 이름과 형식을 지정해줘야 합니다.    int x;
    • 대입 연산자는 등호 한개로 구성됩니다.   =
    • 동치 연산자는 등호 두 개루 구성됩니다. ==
    • while 순환문에서는 조건 테스트가 참이면 그 블록(중괄호 안에 있는 부분)에 있는 것을 모두 실행시킵니다.
    • 조건 테스트가 거짓이면 while 순환문 코드 블록은 실행되지 않으며 순환문 블록 바로 뒤에 있는 코드로 넘어갑니다.
    • 부울 테스트는 괄호 안에 들어갑니다. while( x == 4 ) { }

     

    10. 자동구문 생성기 (배열사용의 예제)

    public class PhraseOMatic
    {
     public static void main (String[] args)
     {
      String[] wordListOne = {"I","Your","She","He"};        // String 배열을 선언하고 만드는 방법이다. 각 단어는 따옴표로 싸여있으며 각 단어는 쉼표로 구분된다.
      String[] wordListTwo = {"is","are","am"};
      String[] wordListThree = {"Genius","foolish","rubbish"};

      int one = wordListOne.length;                          //목록 세개에서 한단어씩을 임의로 선택해야 하므로 목록에 몇개의 단어가 들어있는지 확인해야한다.
      int two = wordListTwo.length;       // 배열에서 첫번째 단어는 0번에 위치하고,두번째 단어는 1번으로 순서대로 위치한다.
      int three = wordListThree.length;      // 배열의 위치와 상관없이 length 는 갯수 그대로 가져온다.

      int rand1 = (int)(Math.random() * one);     // random()메소드는 0~1 미만의 난수를 리턴하므로 정수형으로 캐스팅을 해야 배열의 순번을 정할수있다.
      int rand2 = (int)(Math.random() * two);     
      int rand3 = (int)(Math.random() * three);

      String phrase = wordListOne[rand1] + " " + wordListTwo[rand2] + " " +wordListThree[rand3]; // 배열에서 원소를 뽑아낼 때는 배열에 사용하고자 하는

                                                                                                                                         // 단어의 인덱스 번호를 (위치를) 넘겨줘야한다.

      System.out.print(phrase);
     }
    }

     

     

     

    'Programming > JAVA' 카테고리의 다른 글

    JDBC API 를 이용한 프로그래밍.  (0) 2010.05.03
    클래스와 객체  (0) 2010.05.03
    원시 변수와 레퍼런스  (0) 2010.05.03
    메소드를 더 강력하게  (0) 2010.05.03
    객체의 행동  (0) 2010.05.03
Designed by Tistory.