개발자 학습/JAVA 복습

9월 27일/ 9월 30일 (4,5일차)(3월 13일 오전 & 오후 영상 복습)

aelin14 2024. 9. 30. 21:10

자바 9월 27일/ 9월 30일 (4,5일차)(3월 13일 오전 & 오후 영상 복습)

- 조건문 > switch문 : 조건이 여러개인 경우에 사용됨. 조건에 사용되는 연산자 지정 안함.
(내부적으로 ==만 사용)

- 반복문 > for문
               while문
               do~while문
      *반복문에서 사용되는 2가지 키워드
      - break문
      -continue문
%%%%%%%%%%%%%%%%%%%%

- 변수 scope 
 개념: 자바의 변수는 기본적으로 블럭scope를 따른다.
      블럭({})안에서 선언된 변수는 블럭안에서만 사용할 수 있고
      블럭밖에서 사용이 불가능하다.
 
    main(){

      int num= 10; //로컬변수
      if(true){
         System.out.println(num);
         int num2 = 20; //로컬변수
         System.out.println(num2); 
      }
      System.out.println(num);
      System.out.println(num2);  //에러 발생
    }//end main

%%%%%%%%%%%%%%%%%%%%%%%%%

- switch 문에 사용되는 변수의 데이터 타입은 6가지만 가능하다.
(byte, short, int, char, String, enum)

- 문법: switch(변수) {
               case 값1(리터럴): 문장;
                                           break;  //switch문을 빠져나옴.
               case  값2 : 문장;
               ...
               default : 문장;
         }

- break문이 없으면 일치된 case문 이후의 모든 문장이 실행된다.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

- 반복문 필요한 3가지 요소
 1) 시작값 필요 : 1 ==> 변수사용 
    int n=1;
 2) 증가/감소 연산 필요: ==> 연산자 이용 
    1씩증가/감소: ++n,  --n
    2씩증가/감소: n=n+2; n=n-2; 
                n+=2;  n-=2;
 3) 값비교하는 연산 필요: ==> 조건식
     n<6

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

- for문  (3가지 요소가 같은줄에 있기 때문에 반복회수 예측이 쉽게 가능한 경우 사용한다. )
문법: for(시작값(초기값); 조건식; 증감연산자){
           문장1;
   문장2;
         }
  *주의: 
    위 3가지 구성요소(시작값,조건식,증감연산자)가 
    하나라도 빠지면 원하는 반복이 안 될수 있다.
    무한루프에 빠질수 있다.


- while문( 반복회수 예측이 어렵거나 또는 무한루프가 필요한 경우 사용한다. )
- 반드시 3가지 구성요소(시작값,조건식,증감연산자)가 필요하다.
-문법:

        시작값;
        ..
       while(조건식){
            문장;
증감연산자;
       }

   //무한루프 
    while(true){

    }

- do~while문
- 반드시 3가지 구성요소(시작값,조건식,증감연산자)가 필요하다. 
  문법:

       시작값;
       do{
         
 문장;
 증감연산자;
       }while(조건식);

- 특징: while문은 조건이 처음부터 false라면 한번도 문장이 실행되지 않는다.
하지만 do~while 문은 나중에 조건식이 실행되기 때문에 조건이 처음부터 false라도 반드시 1번은 문장이 실행된다.   
결론은 조건과 무관하게 무조건 1번은 실행해야되는 경우라면 do~while문을 사용한다

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55

- break문

문법:
         if(조건식)break;

        for(int n=1; n <= 5; n++ ){
      //n값이 3일때 중단
              if(n==3)break; //END로 점핑
              System.out.println("hello");
}

        System.out.println("END");

- continue문
: 반복해야 되는 여러 문장들중 특정문장들을 특정회차에서 skip할 때 사용.
  문법:
         if(조건식)continue;

for(int n=1; n <= 5; n++ ){
   if(n==3)continue;  // 반복문의 끝(})으로 점핑
           System.out.println("hello" + n);
}

        System.out.println("END");

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
* 자바에서 데이터 저장방법 3가지
 1) 변수(variable)
    - 값(데이터) 하나만 저장이 가능
    - 데이터 개수만큼 변수가 필요하다.
      관리가 어렵다.
    - 저장되는 값이 기본형: 기본형 변수
      저장되는 값이 참조형(클래스,배열,인터페이스): 참조형 변수

 2) 배열(array)
    - 여러개의 값(데이터)을 저장이 가능.
    - 배열에 저장하는 데이터형은 동일해야 된다.
    - 크기변경이 불가
    - 배열자체는 참조형이고 저장되는 데이터는 기본형 및 참조형도 가능하다.

 3) 컬렉션 ( Collection API )
    - 여러개의 값(데이터)을 저장이 가능.
    - 컬렉션에 저장하는 데이터형은 달라도 무관.
    - 크기변경이 자동.
    - 컬렉션자체는 참조형이고 저장되는 데이터는 참조형만 가능하다. ( 기본형은 wrapper클래스를 이용해서 저장가능)
    - 종류 3가지 ( 클래스로 제공 )
    (1) List 계열
        - 저장순서가 있음. 중복이 가능하다.
    (2) Set 계열
        - 저장순서가 없음. 중복이 불가(1번만 저장됨)
    (3) Map 계열
        - name(key)와 value(값) 을 쌍으로 저장
- 순서가 없음.
- 동일한 name(key)은 저장하면 값을 덮어쓴다.
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

- 배열
특징: 참조형 데이터이다.
        참조형은 반드시 저장영영을 만들 때 new이용한다.
        저장되는 메모리는 heap이다.
        한번 생성된 배열은 크기 변경이 불가능하다. (크기를 늘리고 싶으면 배열을 다시 new 해서 생성해야 한다.)
        배열에 저장되는 데이터는 기본형 및 참조형 모두 가능하다.
        1차원 및 다차원 배열 생성이 가능하다.

int [] num2;  // num2 의 데이터타입? int [], 참조형
                      num2 에 저장될 수 있는 값? 주소값


int [] num2 = new int[3]; //크기 3을 가진 배열이 heap에 메모리 생성된다.
                                   //자동초기화 된다.

 

배열의 저장 메모리




-배열요소접근
    문법: 생성된 배열의 인덱스(첨자) 사용해서 접근한다.
         인덱스는 0부터 시작한다. 배열길이보다 항상 1이 작다. 
 배열길이: 배열명.length

 배열명[인덱스];


-   배열요소 접근 방법

       가. 직접 인덱스 지정
         예> num[0]
  ==> 접근할 요소가 많으면 비효율적임.

       나. (일반) for문 이용
         예>
    for(int idx=0; idx < num.length; idx++){
               System.out.println( num[idx] );
    }
  ==> 단점은 조건을 잘못 지정하면 예외가 발생된다.
   
       다. 향상된 for문 ( foreach 문 )

          문법: 
        for(변수: 배열명 ){

}

         예>  for( int n : num ){
 System.out.println(n);
      }


- 배열 초기화 방법
 1) new 이용
      예> int [] num;
          num = new int[3];
          num[0]=10;
  num[1]=20;
  num[2]=30;

 2) 리터럴(값) 이용 ( ************ )
    문법:
          데이터형 [] 배열명 = { 값, 값2, 값3,....  };
     
      예> int [] num = {10, 20, 30};

    특징: 한번에 구현해야 된다.

         int [] num;
  num = {10, 20, 30}; // 에러 발생

3) new + 리터럴 혼합 형태 ( *********)

    문법:
          데이터형 [] 배열명;
  배열명= new 데이터형[]{ 값, 값2, 값3,....  };
     
      예> int [] num;
          num = new int[]{10, 20, 30};