일반 첫째날 - 자바의 특징과 DATA TYPE

황제낙엽 2003.04.14 11:36 조회 수 : 457 추천:184

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
프롤로그 : 학원에서 자바강의를 듣고... SCJP를 공부하면서 정리해봄. 참고교재는 "(대림출판사) 클릭하세요! 자바2 JDK1.3증보판"


1. 자바프로그램 개발환경

1) J2SE : client side, (jvm), jdk설치, 문법+표준package

2) J2EE : server side, (jvm), jdk+확장패키지 설치, 표준package+화장package, (JDBC,SERVLET/JSP, JNDI, RMI, CORBA, EJB)

3) J2ME : mobile, (kvm), j2me+통신회사전용패키지 설치, (H.P-CLDC+MDlet, PDA-CDC, awt+applet,servlet/jsp+xml/wml)

4) 기타 : JMF(java media framework), JINI


2. 자바의 특징 :

1) PLATFORM에 독립성
2) 객체지향이다. (객체=속성+기능)
3) 멀티 THREAD를 지원한다.
4) 메모리 관리를 자동으로 한다. (VM이 garbage collection을 한다)
    - Garbage Collection에 대하여 : 특정 클래스 객체를 가리키는 어떠한 레퍼런스 변수도 없다면 그 클래스객체는 가비지컬렉팅 된다.
     그 외에 가비지컬렉팅은 사용자가 직접적(direct)으로 실행할수는 없고 system.gc();명령으로 시스템에 요구할 수는 있다.


3. 자바 시작

   ※ 시작하기에 앞서 클래스와 객체와의 관계 살펴보기 (Class, Object, Instance)
     => http://www.javanuri.net/lecture/jp01/index.html (출처 : 자바누리)
       필요한 부분 : "3장. Object이해하기"

1) 자바에서의 변수의 종류

  - 인스턴스변수(member or instance variable)는 생성된 객체내에서 각 메서드들이 공통으로 접근가능한 변수를 일컫는다.
  - 지역변수(local variable)는 메소드레벨에서 초기화되어 해당 메소드에서만 사용가능하다.
  - 클래스변수(global or static or class variable)는 클래스밖에서 또다른 static이라는 공간에 생성되는 변수이다.
  - 클래스내에 선언되는 모든 변수는 의미적으로 메소드블럭{}밖에서 선언되면 전역변수로,
  - 메소드블럭{}내에서 선언되면 지역변수로 구분한다. (밖에서 선언되면 맴버변수... 맴버변수는 클래스변수와 인스턴스변수 모두를 포함한다)
  - 클래스나 메소드 블럭{}안에서 선언된 변수(지역, 맴버)는 {}가 끝날때 자동으로 소멸되게 된다. (변수의 생성과 소멸은 블럭단위)

다음의 예제는 각 변수들을 선언하고 사용하는데 있어서의 특성과 주의사항에 대한 예제이다.

예제)
--------------------------------------------------------------------------------------------------------------------------------------------------------
class A
{
        //맴버(인스턴스)변수들
        int a= 10;          // 선언가능하다. (클래스 멤버필드 변수로 초기화 해도 그만 안해도 그만)
        int b;                // 시스템이 알아서 0으로 초기화 해준다
        string str;         // 시스템이 알아서 null로 초기화 해준다
        string str3="abc";        // 선언과 함께 대입가능 (초기화)
        
        //맴버static(클래스)변수
        static int c;       // static변수선언
        
        public void main()
        {
                //지역변수들               
                int d;        // 이 구문에서는 그냥 통과를 하지만 변수d를 사용하려는 구문에서 compile error
                                   (메소드안에서 선언한 변수는 반드시 초기화해서 사용해야한다)
                string str4; //반드시 초기화 되어야 한다.
                b=5;        // 사용불가능 (compile error)
                c=5;        // class레벨에서 정의된 static변수는 메소드레벨에서 instance생성없이 사용가능하다.
                                  만일 c가 static이 아니라면... compile error(변수를 위한 메모리 할당은 instance생성시 일어나기때문)
                                  또한 A.c=5;와도 같은 문법이다. static변수는 클래스명으로도 접근가능하다.
        }
}

멤버변수는 시스템이 알아서 초기화 해준다(숫자는 0으로 문자는 NULL로)
지역변수는 시스템이 알아서 초기화 해주지 않는다.
--------------------------------------------------------------------------------------------------------------------------------------------------------


4. DATA TYPE (언어의 기초)

1) 종류

  - 기본 DATA TYPE(INT, FLOAT기타등등)
        ex) int a=10;
  - REFERENCE형(CLASS,STRING,배열)
        ex) button b=new button();

2) 각 datatype의 SIZE (1byte=8bit, 2byte=16bit)
        
    Byte    : 1byte (부동소수점)
    Char    : 2byte (0∼216-1)
    Short  : 2byte (-215∼215-1)
    Int      : 4byte (-231∼231-1)
    Float   : 4byte (-231∼231-1)
    Long   : 8byte (-263∼263-1)
    Double : 8byte (-263∼263-1)

   변환크기에 따른 흐름
   byte < short < int < long < float < double
             char  <

3) 각 데이터타입의 default initialized값

    Boolean                    : false
    String과 Object          : null
    Char                         : 'u0000'
    Byte, Short, Int, Long : 0
    Float                         : 0.0f
    Double                      : 0.0

   ※ 기타 data type과 관련된 내용

   - " "은 값이 없음을 의미하고 Null은 Null이라는 값으로 존재함을 의미한다.
   - switch(i)에서 i에 올수있는 data type은 char형과 integer형과 byte형으로 그외에 integer보다 큰 범위의 데이터 타입은 불가하다.
·미리보기 | 소스복사·
  1. switch (int) {   
  2. default:   
  3.  ...   
  4.  break;   
  5. case 1:   
  6.  ...   
  7.  break;   
  8. case 2:   
  9.  ...   
  10.  break;   
  11. }  

   - 3.14는 float일까? double일까?
      소수점이 있는 숫자가 끝에 d나 f가 붙지 않는다면 기본적으로 부동소수계열의 default 데이터형인 double이 된다. 마찬가지로
      정수계열의 default 데이터형은 int이다.
   - String은 call by value로 값을 넘겨주고, StringBuffer는 call by reference로 값을 넘겨준다.
      따라서, String.replace() 와 같이 메서드를 통해서 수정한 return value는 원본이 아니다.
  


5. 배 열(ARRAY) (자바에서 배열의 사용은 C와 조금 다릅니다.)

1) 배열의 사용

  - 선  언) int a[];         //배열의 포인터값만을 생성한다

  - 생  성) a=new int[4];        //실제로 배열[4]를 메모리할당하여 a가 가리키게 된다

  - 초기화) a[0]=10; a[1]=7; a[2]=5; a[3]=13;  //이제 배열을 사용가능하다.

  - 객체배열) String[] member = new String[3];     // 1차원 문자열 배열

2) 위의 선언과 생성을 한문장으로도 가능하다. ex) int [] foo = new int [10];

3) 다음은 모두 같은 문장이다.
  
     int foo[][];
     int [][]foo;
     int []foo[];


  ※ 자바에서의 Key word(reserved word)
    
    implements, extend, default, case, return, import, package, super, this, abstract, final, native, instance of, boolean,
    void, int, null, true, false (대소문자를 확실히 구분할 것)



오늘의 예제 :: [1]"