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

황제낙엽 2003.04.14 11:36 조회 수 : 667 추천: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]"
번호 제목 글쓴이 날짜 조회 수
26 셋째날 - 패키지, 상속, 접근제어 황제낙엽 2003.04.14 728
25 둘째날 - 클래스, 메서드, 연산자 황제낙엽 2003.04.14 651
» 첫째날 - 자바의 특징과 DATA TYPE 황제낙엽 2003.04.14 667
23 Polymorphism과 Method Overriding에 대한 이야기 황제낙엽 2003.05.15 502
22 자바의 특징 황제낙엽 2003.05.06 640
21 JVM (Java Virtual Machine)에 대한 몇가지 설명 황제낙엽 2003.05.06 453
20 자바설화 황제낙엽 2003.05.03 607
19 XML기반 정보 보호 기술의 대두 황제낙엽 2003.04.22 512
18 인터넷을 통한 자바 기술의 변화 황제낙엽 2003.04.07 696
17 JAVA관련 용어와 기술 황제낙엽 2003.04.05 661
16 UTF-8을 위한 문자열 인코딩처리 관련 황제낙엽 2006.10.06 1081
15 Code Conventions for JavaTM Programing Language file 황제낙엽 2006.10.23 702
14 자바에서 UTF-8 개발에 관한 정리 (2) 황제낙엽 2006.10.06 798
13 자바에서 UTF-8 개발에 관한 정리 (1) 황제낙엽 2006.10.06 745
12 일본어 전각 반각 변환 예제 소스 .두번째 [1] file 황제낙엽 2007.01.11 780
11 일본어 전각 반각 변환 예제 소스 .첫번째 file 황제낙엽 2007.01.10 3685
10 환경파일 로드 클래스 구성 (XML파싱) 황제낙엽 2007.01.05 781
9 HttpURLConnection을 사용하여 웹 페이지 액세스하기 (두번째) 황제낙엽 2007.01.05 766
8 자바의 I/O 예제 [1] file 황제낙엽 2006.12.28 547
7 HttpURLConnection 클래스를 이용한 Search 황제낙엽 2006.12.28 856