자바 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};
'개발자 학습 > JAVA 복습' 카테고리의 다른 글
10월 8일 (6일차)(3월 14일 오전&오후 영상 복습) (4) | 2024.10.08 |
---|---|
workshop 02 문제 풀기 (문제 1~11번) (1) | 2024.09.26 |
9월 26일 (3일차)(3월 12일 오전 & 오후 영상 복습) (1) | 2024.09.26 |
9월 25일 (2일차) 추가 학습 (0) | 2024.09.26 |
workshop 01 문제 풀기 (문제 1~3번) (0) | 2024.09.25 |