자바(java) 기초 3편.

리뷰
1. 객체 생성 ( new 이용 )
   Employee  e = new Employee();

  멤버접근
   e.멤버

2. public static void main( String [] args ){}
  ==> 객체생성없이 실행가능한 특별한 메소드.

3. 생성자 ( Constructor )
  – 변수 : 데이터 저장
  – 메소드 : 데이터 수정, 얻기
      ==> 객체생성하고 참조변수.메소드 호출가능.

  – 생성자 : 데이터 초기화
       ==> new 클래스명([인자]);

  ==> 모든 클래스에는 자동으로 기본생성자(default 생성자)
  가 생성된다. ( public 클래스명(){} )
  ==> 개발자가 명시적으로 생성자를 만들면 기본생성자는
   자동 생성 안된다.

4. 오버로딩 생성자, 오버로딩 메소드
  : 같은 이름의 생성자, 메소드가 여러개 지정가능하다.
   단, 인자 리스트는 반드시 달라야 된다.
      ( 인자 갯수, 순서 , 데이터형 )
  :  재사용성을 증가.

5. 연산자
   – 산술연산자
   – 비교연산자 (논리값)
   – 대입연산자
   – 논리연산자 (논리값)
   – 3항연산자
   – instanceof (논리값)

  ==> 논리값으로 결과가 나오는 연산자는 제어문과 같이
  사용된다.

 6. 제어문
    – 단일if문, if~else문, 다중 if문, switch

3일차.

1. 반복문
  : 한번 실행한 문장을 반복해서 실행가능한 문.
  : 중첩이 가능하다.
  :종류

  가.  for
    : 배열과 같이 주로 사용한다.
    for(초기값 ; 조건식 ; 증감연산자){
      문장;
    }
     순서는 다음과 같다.
   초기값 -> 조건식 -> 문장실행 -> 증감->조건식->문장->…

 예>  for( int i = 0 ; i < 10 ; i++ ){
         System.out.println(“Hello”);
      }
 
     for( int i = 0 ; i < 10 && k==3 ; i++ ){
        for( int k = 0 ; k < 5 ; k++ ){
         System.out.println(“Hello”);
  }//end for
      }//end for
     
 실습>
          *
   **
   ***
   ****
   *****
 
   무한루프
    ==> for( ; ; ){
    
        }
 


  나. while
  
    문법:
      
       while(조건식){
             문장;
       }

  예>
       int i = 0;
       while( i < 10 ){
          문장;
   i++;
       }
        
  무한루프
     while(true){

     }


  다. do~while
  ==> 최소한 한번은 문장을 실행할 수 있다.
  문법
  
     do{
         문장
     }while(조건식);

   예>
        int y = 0;
 do{
           System.out.println(“hello”);
    y++;
 }while( y < 10 );


  : 공통점
    ==> 반복횟수가 지정된다. ( 10번 )
    ==> 시작값(초기값)이 필요 (  int i = 10;
    ==> 증가 연산자 필요 ( i++ )
    ==> 조건 검사 (  i < 10 )


 2. 패키지 ( package )
   용도: 윈도우 폴더 역할.
        많은 클래스들을 관련된 것끼리 묶어주는 역할을 한다.
   특징 : 패키지명은 유일한 값으로 지정한다.
        ( 도메인 형식으로 )
 : 패키지가 틀리면 클래스를 사용할 수 없다.

   문법: 클래스를 정의전에 다음과 같이 package을 명시한다.
   
      package 패키지명; 
      package 패키지명.패키지명2;

 예> package com.test;
 
   public class 클래스명{}   

 ==> javac 로 명시적으로 컴파일은 다음과 같다.

  – 일반적인 컴파일

     javac  Student.java
 
  – 일반적인 실행
    
     java Student

   – 패키지 컴파일

      javac  -d  클래스위치경로  Student.java
    
    – 패키지 실행  

      java com.test.Student

3. import
 용도: 패키지가 달라도 클래스를 접근가능하게 해주는 방법.
 특징: 여러번 사용 가능.
 문법
      import 패키지명.패키지명1.클래스명;

   예>
 
    import com.test.Student;
    import com.xx.AAAA;

    public class TestStudent{}

==> 패키지가 다르면 반드시 import 해야 된다.
==> API ( 시스템이 만들어준 클래스파일들 :rt.jar ) 가
    패키지로 제공된다.
==> API 중에서 java.lang 패키지는 자동 import 된다.
따라서 java.lang 이외의 패키지에 저장된 클래스를 사용할때에는 반드시 import 해야 된다.
==> ctrl + shitf + o (영문자)

4. 문자열 생성하는 방법
   : 리터럴 ( “”  표현 )
  
  가. String 클래스
    ==> 한번 생성된 문자열을 변경안됨. 가공하면 새로운 문자열이 생성된다.

     – new 이용
       : String yyy = new String(“Hello”);
       : 동일한 문자열도 매번 생성

     – 리터럴이용
       : String xxx = “Hello”;
       : 동일한 문자열은 재사용.

    ==> 문자열은 문자의 배열이다.
  
       “Hello” –> H e l l o
                   0 1 2 3 4 ==> 인덱스(첨자)
    

  나. StringBuffer 클래스
     – new 이용
     – 한번 생성된 문자열 수정이 가능
     – 문자열의 수정이 많은 경우에 사용한다.
     – append 메소드를 주로 사용한다.

  다. + ( 연결연산자)
  ==> 문자열과 + 다른데이터형 : 문자열로 변경

 예> int num = 123; //  num 정수를 문자열로 변경
   String xxx = num+””; 
   // “”:빈문자열(empty string)-권장안함


  라. toString 메소드 이용.
    ==> 문자열로 만드는 메소드
    ==> 기본형데이터를 문자열로 변경시 주로 사용
        ( Wrapper 클래스이용)

5. Wrapper 클래스 ( 랩퍼 클래스 )
 ==> 기본형 데이터에 해당되는 8개의 클래스를 의미.
 ==> 기본형 데이터 작업시 효율적으로 작업하자.
     ( Wrapper 클래스의 메소드, 변수를 이용하자 )

  기본형            참조형(클래스)
             
  byte               Byte
  short              Short
  int                Integer
  long               Long
 
  float              Float
  double             Double

  char               Character

  boolean            Boolean

  예> “123” ——-> 123
      123 ———–> “123”

      String x = “123”;
      int y =  Integer.parsetInt(x);
      int y2 = y + 1; //124

      “123.4F” ——–> 123.4F

      String x2 = “123.4F”;
      float z = Float.parseFloat( x2 );

  ==> 변수, 메소드 static 지정된것은 클래스명.멤버 ,
     객체생성불필요.

6. 데이터 형변환

  -정의: 데이터형이 변경됨을 의미한다.
  – 반드시 같은 계열끼리만 변경가능하다.

   * 데이터형 ( 기본형:수치형끼리 , 참조형:상속관계 )
                     
 
  종류
     가. 자동 형변환 ( promotion )

  예>  int x = 3;
      long y = x;  (  8byte = 4byte )
                    ( int 형 x가 long 형으로 자동형변환)
      float f = 2.3F;
      double d = f; ( float 형 f가 double 형으로 자동형변환)

      int x = ‘A’ + 1;  // 66

      float xx = 2.13F;
      int xx2 = 10;
      xx + xx2 ==> 실수값

     나. 강제 형변환 ( type casting )
      : 형변환 연산자( 캐스트연산자:cast 연산자)를 사용한다.
      : (데이터형)

     long x = 3;
     int y = x;  ( 4byte = 8byte )
     int z = (int)x;

     char c = (char)66;  //B

7. 지정자 ( modifier )
  용도: 클래스, 변수, 메소드 정의시 특별한 의미를 부여하는
  키워드
 
  종류
   가. 접근 지정자 ( access modifier ) 4가지
     ==> 클래스,변수,메소드등의 접근을 제한하는 방법
     ==> 패키지 고려해야 된다.

        public
  : 모든 곳에 접근가능
   ( 같은패키지, 다른 패키지 상관없이 )

        protected
  : 같은 패키지내에의 클래스간 접근 가능.
     + 다른패키지 접근 가능(단, 상속관계)

               (friendly)
  : 같은 패키지내에의 클래스간 접근 가능.
    ( 다른 패키지 접근 불가)
 private
  : 같은 클래스에서만 접근 가능하다.

   * 클래스 : public(권장) , (friendly)
     메소드 : public (권장)
     변수(인스턴스변수만 지정가능): 로컬변수 사용못함.
            : private( 권장 )==> 직접접근못함(데이터무결성)
                      ==> 은닉화( encapsulation )

   나. 일반 지정자( standard modifier )
      : static
      : final
      : abstract

 ==> 지정자끼리 조합해서 사용한다.
     

8. final 키워드

의미: 금지 (불가)
사용:
  클래스
    : public final class 클래스명{}
    : 상속불가

  변수:
    : final int num =3;
       …
      num = 10; // 에러 발생
    : 값 변경 불가 ( ==>  상수 )

  * 상수( constant )
   : 값 변경
   : 이름은 대문자 지정한다.
   : 문법
     일반적으로 public static final 지정자를 사용한다.

     public static final int NUM = 3;


    클래스명.NUM  으로 사용한다.
  
  메소드
    : public final void a(){}
    : 오버라이딩 메소드 불가
     *오버라이딩 메소드
      ==> 부모의 메소드를 상속받아서 나름대로
      수정한 메소드.
   

9.  static 키워드

 특징: 객체생성과 무관
      ( 객체생성전에 자동생성된다. == > 객체생성이 필요없다.)
     : 한번만 생성된다.
     : 클래스이름.멤버 로 접근한다.
     : 저장메모리

       – 스택 ( 로컬변수)  ==> 메소드호출할때마다 생성
       – 힙  ( 인스턴스 변수) ==> new 할때마다 생성
 new 객체생성======>
       – 클래스area ( static 변수, static 메소드)
         (static area)  ==> 단 한번 생성
                 => 프로그램실행 ~ 프로그램 종료
     (  main 시작 ~  main 종료 )
 *변수           
  : static 변수 , class 변수
  : 단 한번 생성
  : 공유 목적으로 사용한다. ( 예 > 값 누적 )
    프로그램종료전까지 데이터를 유지해야 되는 경우에 주로
    사용한다.

 * 메소드
  : static 메소드
  : 객체생성없이 사용목적.
   예> Integer.parseInt() , Integer.toString()

  * 클래스
   : static 클래스
   : 중첩 클래스에서 사용한다.
    
     class A{    // Outer 클래스
      static class B{  // Inner, nested , 중첩클래스

 }
     }//end A


 예> 객체 생성 횟수 ?

 
 * static 블럭

  예>  static{
             System.out.println(“hello”);
        }


10. 싱글톤 디자인 패턴 ( singleton design pattern ) ?
  *디자인 패턴 ( design pattern ) ?
    ==> 프로그램 개발의 방법중에서 검증되고 효율적인
    코드를 일관된 방법으로 사용하는 것.

  정의: 인스턴스를 하나만 생성할 수 있는 패턴.
       ==> 현실세계의 객체가 하나만 있으니까.
  구현:
       ==> new 를 한번만 해야 된다.


11. 상속

관련 글

답글 남기기

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