//조건식 1이 true로 판정되고, 조건식 2는 false로 판정되면 블록내의 수행문이 실행된다.
}}
내포된 if가 많아질수록 깊이가 더욱 깊어짐 --->프로그램의 복잡도가 높아짐
if내의 if내의 if문의 경우 꼭 필요시에만 작성해야한다. 내포된게 많을수록 복잡도가 올라가고, 가독성이 떨어진다.
그러나 어떤 경우에 실행되는지 파악하기는 쉽다.
코딩을 할 때에는 실패한 경우를 먼저 찾는게 좋다. 코드가 더욱 간단해지기 때문이다.
switch문
하나의 조건식으로 많은 경우의 수를 처리할 수 있다.
처리할 경우의 수가 많은 경우 유리하다.
switch (조건식) {
case 값1:
// 조건식의 연산결과가 값 1과 일치하는 경우 실행될 수행문;
break;
case 값2:
// 조건식의 연산결과가 값 2 와 일치하는 경우 실행될 수행문;
break;
default: (if문에서 else부분과 동일함)
// 조건식의 연산결과가 일치하는 case문이 없을 때 실행될 수행문
}
switch의 조건식의 경우 정수, 문자, 문자열만 가능하다. 열거형만 가능하다.
값이 중복이 되지않아야한다.
break문이 없으면 그다음에 정의된 case문~ default문까지 전부 실행됨으로 연산결과가 달라지기 때문에 break문을 꼭 넣어줘야한다.
조건식의 값과 case의 값이 ==만 가능하다. 범위비교가 안됨
1. 비교조건자체가 정해져있고, 양이 많지않은 경우에만 가능함
2. 비교할 대상이 되는 값들이 미리 결정, 그 중에 한 개의 값을 가지고 있는 경우에 사용이 가능함.
자바 1.7 이전에는 case에 숫자와 영어밖에 사용 못 했었음 이후로 문자열 사용 가능함.
switch문은 많은 사용을 하지 않는다. if문을 많이사용하고, 범주형 데이터에서 비교값들이 case를 미리 알고 있고 == 를 알고있을때만 switch문을 사용한다.
반복문
반복문은 ~하는 동안을 구현할 때 사용을 한다. 그리고 for문과 while문은 구현할 때가 구분이 되어 있는데, for문의 경우 반복의 횟수를 알고 있을 때 (일반적) 으로 많이 사용한다. while문은 반복의 횟수를 모를 때, while을 생각 할 수 밖에 없을 때 사용한다.
보통은 while문 사용이 정해져 있기 때문에 지금은 다루지 않을 예정이다. 책에 나온 것처럼 사용하는 경우는 없다. collection 때 사용할 예정이다.
반복문은 특정한 수행문을 반복해서 실행하는 구문이다.
반복문은 제시된 조건이 true인 경우 블록내의 수행문을 반복 실행한다.
for, while, do ~ while 구문을 사용한다.
for 문
for문은 초기화식, 조건식, 증감식, 코드 블록으로 구성되어있다.
제시된 조건이 참인 경우 반복 실행한다.
초기화식, 조건식, 증감식, 모두 생략이 가능하다 ---> 생략이 되었다고 제거해서는 안되고 위치만 변경하는 것이다.
초기화식에서 선언한 변수는 조건식, 증감식 및 for문의 블록내에서만 사용가능하다.
for (초기화식; 조건식; 증감식) {
// 조건식이 true인 동안 수행할 수행문;
// 조건식이 true인 동안 수행할 수행문;
}
for (;;){
--------->무한반복문 코드
}
1 . 초기화식 2.조건식 (true면 실행, false면 종료 ) 3.실행문장 4. 증감식 5.조건식 6.실행문장(false일 때까지 )
초기화식 : 초기의 값을 설정함, 몇부터 시작인지, 변수 선언, 1번만 실행함
조건식 : 최대 값을 설정함, 몇까지 진행인지, 컨텐츠의 객수만큼 표현함,
증감식 : 변화를 주지않으면 무한반복 됨, 증감연산자를 사용함
Ex) 영화싸이트, 예매율과 그림, 평점 , 계속된 반복
인스타 : 계속 반복된 사진
11번가 : 판매물품, 반복적인 효과 ---> 반복 작업을 통해 반복하는 것
데이터를 가져올때 전체적으로 가져오는 것이 아닌 원하는 만큼 추출해서 가져옴, 20, 50 100개 내외로 이럴 때 반복문을 사용하면 유용함.
for문의 목적 -----> 업무로직, 정보시스템의 경우 데이터의 갯수가 정해져있음.
배열과 리스트는 각방마다 index를 가진다. 똑같은 형태인데 x[0], x[1], x[2], x[3], x[4]... 배열의 이름만 다름, 그래서 for문을 이용하여 쉽게 출력을 할 수 있게 만들어준다. 여러개의 데이터를 저장한 자료구조를 다루기 위하여 for문을 사용한다. ----------->index를 갖고 있는 자료구조에서 활용이 가능함
if 와 for문은 함께 사용이 가능하다.
// 1 ~ 10까지의 정수 중에서 짝수/홀수 의 합계를 계산하기 ---> 1~10까지의 정수 ( 반복문 ) 짝수/홀수의 합계 -->짝수일때 홀수일때 -->제어를 시킨다.
변수를 만들고 정의할 때 변수의 범위를 생각해야한다.
변수를 코드 블록으로 작성하지 않고 넓게 쓰면 충돌을 신경써야함, 실제로 사용하는 곳에서만 사용하도록, 좁게 사용하는 것이 좋음.
Scanner--> JRE--->java.util(package).Scanner안에 scanner에 대해서 작성이 되어있다. import를 시키면 package안에 있는 내용을 가지고 오는 코드로 작성할 수 있다. export가 내보내다이다.
내부를 확인하면 빨간색으로 되있는것은 캡슐화 시킨 부분으로 구지 알 필요도 없는 곳에 감춰놓은, 프로그램이 돌아가는 사고와 직접 연관된 곳으로 은닉화 한것이다.
나머지 중 nextByte() nextShort() nextBoolean() nextInt() nextLong() nextDouble() 이있는데,
nextInt()는 키보드로 입력된 값을 정수(int 타입의 값으로)로 읽어온다.
nextLong()는 엄청 큰 숫자를 읽어올 때 사용한다.
nextDouble()는 소수로 읽어올 때 사용한다.
Scanner scan = new Scanner(System.in);에서 System.in의 경우 (표준 입력 장치, 키보드)으로 부터 입력값을 읽어오는 Scanner객체를 생성한다는 의미이다.
scanner.close()의 경우 운영체제와 하드웨어와 연결된 표준입력장치가 window, word에 사용을하는데, Resource leak: 가 일어날 수 있다는 표시가 뜬다. 자원의 누수가 일어날 수 있다는 표시가 뜨는데 , 컴퓨터가 내것, 사용후 종료한다면 close()메소드를 사용하지 않아도 무방하고, 상시연결이 되어있고, 24시간동안 켜져있는 컴퓨터라면 메소드를 사용해주는 것이 좋다.
사용자가 if, for , DB 하나도 몰라도 수강신청이 가능함, 서비스가 가능함, 프로그램이란 프로그램의 P도 몰라도 원하는 작업이 구현되도록 하는 것이 우리의 목적
Break, continue : 반복을 중단시키기, 다음번 반복으로 넘어가기
반복문 안에서만 사용가능하다 (Break문은 Switch에서도 사용가능함.)
남발하면 소스코드를 이해하기 어렵기 때문에 신중하게 사용해야한다.
무한반복인 경우 while을 사용한다. for문에 비해 구조가 간단하기 때문 , 반복횟수를 알 수 없는 경우 사용하는 반복문으로 while문을 사용해서 반복작업을 수행할 때는 대상 객체는 반복 지속 여부를 조회할 수 있는 기능을 제공해야한다. while문을 사용하면 무한루프를 간단히 구현할 수 있다. 이때 반복문안에서 조건문과 함께 사용되는 것이 break문이다.
break문은 반복문안에서 조건문과 함께 사용이 되어야 한다.
break문과 조건문, 실행문 위치에 따라서 출력되는 결과가 다르기 때문에 사용을 잘 해야한다.
continue : 남아있는 수행문을 실행하지 않고 다음번의 수행문을 시행한다. : while
for: continue : 남아있는 수행문을 실행을 취소하고 다음번 반복을 위해서 증감식으로 이동한다.
예를 들어 부양가족에 따라서 가족 수당을 지급한다는 급여 명세표를 만든다고 한다.
이런식으로 continue의 경우 기본급과 근무일수만 있을경우 다음 조건문이 아닌 다시 반복문으로 가서 수행한다.
이렇게도 사용될 수 있다.
break문의 경우 아예 반복문을 탈출하고, continue는 탈출하지 않고 거기서만 벗어나서 다시 반복문을 수행한다.