자바(java) 기초 2편.

리뷰.
1. 객체 추출.
2. 자바특징
3. 클래스
   public class 클래스명{
  
   }
4. 클래스의 구성요소 ( 클래스의 멤버)
  : {}  안에서 사용가능한 요소
  가. 변수 ( 인스턴스 변수)
    : 데이터 저장
    : 중복되면 안된다. ( 식별이 불가 )
    : 문법
      데이터형 변수명;

   * 데이터의 종류
     – PDT
     – RDT
       : String

   * 식별자(identifier )
    : 이름 ( 자바코드의 각 단어 )
    : 종류
      – 시스템 지정 식별자(키워드)
      – 사용자 지정 식별자
        : 클래스명 ( 첫글자는 대문자, 의미있는 명사형)
 :변수명 ( 모두 소문자 , 의미있는 명사형 )
 :메소드명 ( 모두 소문자, 의미있는 동사형 )
        
   * 리터럴( Literal )
     : 자바코드에서 식별자를 제외한 것 ( 실제 값 )
     : 정수값( 10 ), 문자( ‘A’ ) ,
       문자열 ( “홍길동”) , 실수값 ( 323.22 )
   예>
       int num = 20;
       String name =”홍길동”;


  나. 메소드
    : 변수에 데이터를 저장,얻어오기
    : 반드시 호출해야 수행된다.
      호출해서 작업이 끝나면 반드시 호출한 곳으로 돌아온다.
      호출할 때에는 이름과 인자 리스트가 반드시 일치해야 된다.
    : 문법
    
     public  리턴타입  메소드명([인자]){
    
       return [값];   ==> 호출한곳으로 돌아간다.
     }
 
   ==> return; ( 리터타입은 void 라고 명시한다. )
        ( return 을 생략가능하다. 일반적으로 생략한다.)
       return 2; ( 리터타입은 int 라로 명시한다. )
       return “홍길동”; 
       ( 리터타입은 String 로 명시한다. )
 

      return  “홍길동” + 2;

    : 종류1
       – setter 메소드
         : 데이터를 설정시 사용
  : set변수명으로 지정

       – getter 메소드
         : 데이터를 얻어올때 사용
         : get변수명으로 지정
 
 

  다. 생성자


// 2일차.

1. 메소드
2. 클래스의 종류

  가. 클래스의 종류1
      – 시스템 정의 클래스 : API
      – 사용자 정의 클래스
 
  나. 클래스의 종류2
      – 재사용 가능한 클래스
        : Employee, Student
 : main 메소드가 없다.
  이유는 재사용하기 위해서이다.

      – 핸들링 클래스( Handling class )
        : StudentTest
 : main 메소드가 있다.
         이유는 재사용 가능한 클래스를 핸들링하는 역할.
 : 역할
 ==> 재사용 클래스를 메모리에 올리고
    변수에 값을 저장, 얻기
 ==> caller 메소드가 위치한다.

3.  main 메소드
  : 호출하지 않아도 자동으로 수행된다.
  : starting point (시작점) 역할.
  : 문법
    public static void main( String[] args){}

4. 재사용 클래스를 메모리에 올리는 작업
  – 동일용어
    : ‘객체 생성’ , ‘인스턴스화’ , ‘메모리 로딩’

  – 문법
   
     new  클래스명([인자]);

   예>
       new Student();
        => Student 클래스의 구성요소(인스턴스변수,메소드)
 가 메모리에 위치와크기를 가지고 생성된다.

       new Employee();
        => Student 클래스의 구성요소(변수,메소드)
 가 메모리에 위치와크기를 가지고 생성된다.
 => 나중에 변수와 메소드를 사용하려면
 위치값을 이용해서 접근 가능하다.
 ==> 위치값도 데이터이다.
   따라서 변수에 저장가능하다.

클래스명  변수명 = new  클래스명([인자]);

예> Student stu = new Student();
    Employee e = new Employee();

5. 클래스의 멤버 접근
  : 반드시 객체 생성을 하고 접근 가능하다.
   Employee e = new Employee();
 
  :  e 변수를 이용해서 접근할 수 있다.
    ( 변수 , 참조형 변수, Employee 클래스형의 변수 )
  : e 변수에는 어떤 값이 저장? ( 위치값 : 주소값 )
 
   * 변수값 종류
    가. PDT
       int a = 123;
       float f = 31.34F;
     ==> a 변수에는 123 실제값이 저장된다.
     ==> PDT 형의 변수는 실제값이 저장된다.
      
    나. RDT
       Empoloyee a = new Employee();
       Student f = new Student();
     ==> a 변수에는 실제데이터가 저장된 위치값을 저장한다.
     ==> RDT 형의 변수는 실제값이 저장된 위치값


  : 참조변수.멤버;
  
    – 변수 접근
        참조변수.변수

    – 메소드 접근 ( caller 메소드 )
        참조변수.메소드명([인자]);

  예>
       Employee e = new Employee();
       e.ssn = “111”;
       e.name = “홍길동”;
       e.salary = 2000.0;

       e.setName(“홍길동”);
       e.setSsn( “11” );
       e.setSalaray( 234.22 );


  *
                        new
  Employee 클래스 ————>    Employee 객체(인스턴스)
                        new
                  ————>    Employee 객체(인스턴스)

       new
     ————>   Employee 객체(인스턴스)

6. 변수의 종류 3가지
  : 데이터 저장
  : 구분은 데이터의 생명주기
 
 가. 로컬변수
   : 메소드안에서 선언
   : 메소드를 시작시 생성 ~ 메소드가 종료되면 삭제된다.
     ( 메소드를 호출 생성 ~ 메소드가 return 될때 삭제)
    public void a( int x ){
      int z = 2;

      return;
    }
    : 로컬변수는 메소드내에서만 사용 가능하다.
    : 사용하기전에 반드시 초기값을 지정해야 된다.
    : 스택(stack) 메모리에 생성된다.
   ==> 메소드를 호출할때마다 생성된다.

 나. 인스턴스 변수
   : 메소드 밖에서 선언
   : 객체생성시 생성 ~ 객체소멸시 제거
   : 클래스 블럭내에서 사용 가능하다.
   : 자동으로 기본값으로 저장된다.
      ( 정수: 0 , 실수 : 0.0 , boolean:false,
        참조형: null )
   : 힙(heap) 메모리에 생성된다.
  ==> 객체 생성할때마다 매번 생성된다.


     * 객체소멸시점
      ==> 코드에서 객체의 위치를 저장하는 코드가 없으면
      객체소멸 대상이 된다.
      ==> Garbage Collector(GC) 스레드가 제거.
      예>
          new Employee();
       Employee e = new Employee();
       e = null;
       * null 값
       ==> 참조형 변수에만 저장 가능.
       ==> 쓰레기값을 의미한다.
       ==> 참조형 변수에는 원래 주소값이 저장되어야 한다.
          null을 가지면 쓰레기값을 지정하게 된다.


 다. static 변수(클래스 변수 )

7. 생성자 ( Constructor )

 용도: 인스턴스 변수에 값을 처음 넣어주는 역할
       ( 초기화 작업 )
       : setter 메소드 역할은 수정하는 역할을 한다.

 문법:

    public 클래스명([인자]){}

 특징:
    – ‘method-like’
    – 리턴타입이 없다.
    – 반드시 클래스명으로 이름을 지정한다.
    – 호출해야 수행된다.
    – 자동으로 생성되는 생성자가 있다.
       ( 기본생성자: default constructor)

       //worker 생성자
       public 클래스명(){}

       //caller 생성자

        new 클래스명();
  
     예>
         new Employee();  // 생성자를 호출한다.
         new Employee( “홍길동” );
  new Employee( “홍길동” , 20 );

8. 오버로딩 생성자 ( overloading Constructor)
   문법:
     같은 이름으로 된 생성자가 여러개 사용 가능하다.
  
   규칙:
       인자 리스트가 달라야 된다.
        ( 인자갯수, 순서, 타입 )
   예>
      public Employee(){}
      public Employee(int x){}
      public Employee(String x){}
      public Employee(int a , int b){}
      public Employee(String x, int x){}

   주의사항:
     -사용자가 명시적으로 하나라도 생성자를 만들면
     기본생성자는 자동 생성되지 않는다.
      – 오버로딩 생성자를 사용하는 경우에는
      반드시 인자없는 생성자를 명시적으로 구현하자.
       ( 상속 )

9. 오버로딩 메소드 ( overloading method )
   문법:
      같은 이름으로 된 메소드가 여러개 사용 가능하다.

    규칙:
       인자 리스트가 달라야 된다.
        ( 인자갯수, 순서, 타입 )


 예>
     public void a(){}
     public int a(){}  (X)

     public void a(int a){}
     public void a(String a){}
     public void a(int a , String x){}
    
 ====> 재사용을 위해서 사용하는 기법이다.

 10. 연산자 ( operator )

  가. 산술연산자
   
      + : 덧셈
      – : 뺄셈
      * : 곱셈
      / : 나눗셈 ( 몫 )
      % : 나머지

   나. 비교연산자
   ==> 결과값은 논리값이다.  boolean 변수로 저장한다.
  
    ==  :  같냐?  ==>
    >   :  크냐?
    >=  :  크거나 같냐?
    <   : 작냐?
    <=  : 작거나 같냐?
    !=  :  같지 않냐?

    다. 대입연산자

    a = b    ==> b을 a에 대입 ( 저장 )
    a += b   => a와 b을 더해서 a에 대입
             => a = a + b; 동일
    a -= b   => a와 b을 빼서 a에 대입
             => a = a – b; 동일
    a *= b   => a와 b을 곱해서 a에 대입
             => a = a * b; 동일
    a /= b   => a와 b을 나누어서 몫을 a에 대입
             => a = a / b; 동일
    a %= b   => a와 b을 나누어서 나머지를 a에 대입
             => a = a % b; 동일
 
    라. 증감 연산자

     : 증가 연산자
       => ++
       => 1 씩 증가
 
  예>    int n = 3;
         ++n;   // n = n + 1;
  n++;

     : 감소 연산자
        ==> —
 ==> 1씩 감소
  예>    int n = 3;
         –n;    // n = n – 1;
  n–;

  마.  논리 연산자
   ==> 논리값으로 결과가 나온다.

    : && ( and )
    : ||  ( or )
    : !   ( not )

  * &&
   true && true == > true
   true && false == > false
   false && true ==> false
   false && false ==> false

==>  ( 2 > 4 ) && ( 5 == 3 )

      int num = 2;
      int y  = 4;

      ( num > y ) && ( 5 == num )

   * ||
   true && true == > true
   true && false == > true
   false && true ==> true
   false && false ==> false

   * !
    ! true ==> false
    ! false ==> true

 
 바. 3항 연산자

  문법:

  (조건식) ? 값1 : 값2 ;

  조건식 => 결과가 boolean으로 나오는 연산자
         ==> true 이면 값1 선택하고
      false 이면 값2 을 선택한다.
 
 사. instanceof
   : 키워드
   : 연산자
   : 참조형 변수의 데이터형을 비교할 때 사용한다.

 문법
     변수명  instanceof 클래스명 ===>논리값으로 결과출력

   예> Empoloyee e= new Employee();
       ..
       ..

       …

       e.xxx;
       ..

    
      if( e instancof Employee ){}

11.문 (Statement )

  가. 실행문
      – 순차문
      – 제어문
         – 분기문(조건문)
            : if 문  , if~else문, 다중 if문,
       switch 문

  – 반복문
            : for 문 ,  while 문, do~while 문
     : 빠른 for문

  나. 비실행문
       – 주석문

12. if문
 문법:
  
    if(조건식){
       문장;
    }

    조건식이 true 이면 문장을 실행하고
    false 이면 문장을 실행하지 않는다.
 
  예> num의 값이 10 이상이면 실행하고 ….
      int num = 4;

      if( num >= 10 ) System.out.println(“num이 10이상”);
 

    if( 조건식 ){
          문장;
          문장2;
     }

  * 블럭
   : 변수
   : 변수의 생명주기가 가장 가까운 블럭으로 제한된다.

13. if~else 문

 문법:
 
    if(조건식){  // if절
       문장1;
    }else{        // else절
       문장2;
    }
   ==> 조건식이 true 이면  문장1을 수행하고
       false 이면 문장2을 수행한다.

    if(조건식){
       문장1;
       문장11;
    }else{
       문장2;
       문장22;
     }

14. 다중 if 문
 
  문법:

     if (조건식){
        문장1;
     }else if( 조건식2 ){
        문장2;
     }else if( 조건식3 ){
        문장3;
     }else{
        문장4;
     }
 
    문장5;

  예> 학점 구하기

    90이상 : A 학점
    80~89  : B 학점
    70~79  : C 학점
    나머지 : F 학점

     int num =
 
     //다중 if문 작성하기
  
15.  switch 문

  문법: 값으로 지정가능한 데이터형은 4가지가 가능하다.
        ( byte, short ,int , char )
    
     switch(값){
      case  값1: 문장1; break;
      case  값2: 문장2; break;
      case  값3: 문장3; break;
      default: 문장4;
     }

 ==> 값과 일치하는 case 의 문장을 실행한다.
 ==> break 문을 만나면 switch 블럭을 빠져나온다.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다