190410_3일차 조건문 이어서, 반복문
조건문
if문
형식 : if(조건식) // boolean 데이터!
{
boolean데이터! //조건식의 결과가 참일때 실행할 문장;
}
class D { void hello( int su ) //int su = 1 { if( su == 1 ) { System.out.println( "안녕" ); } if( su == 2 ) { System.out.println( "신짜오" ); } if( su == 3 ) System.out.println( "Hello" ); } } class IfTest { public static void main(String[] args) { D d = new D(); int num = 2; d.hello( num ); } }
if~else문
- 형식
if(조건식) { //조건식의 결과가 참일때 실행할 문장; }else { //조건식의 결과가 거짓일때 실행할 문장; }
주의
else는 홀로 사용이 불가!!
반드시 if(){} 이후에 입력되어야 함.
switch~case문 (다중택일 조건문)
- 형식
switch(기준데이터) { case 비교데이터1 : 실행할문장1; case 비교데이터2 : 실행할문장2; case 비교데이터3 : 실행할문장3; } class SwitchTest { public static void main(String[] args) { int su = 55; switch( su ) { case 1 : System.out.println( "하이" ); break; case 2 : System.out.println( "신짜오" ); break; case 3 : System.out.println( "안녕" ); break; default : // 일치하는 값이 없을때, 실행 문장 표현 System.out.println( "잘못된 입력입니다." ); } } }
class SwitchTest { public static void main(String[] args) { int jumsu = 105; int su = jumsu/10; switch (su) { case 10 : case 9 : System.out.println( "A학점" ); break; case 8 : System.out.println( "B학점" ); break; case 7 : System.out.println( "C학점" ); break; case 6: System.out.println( "D학점" ); break; default : System.out.println( "F학점." ); } } }
java의 제어문 break와 continue가 있다.
break가 없다면 switch입력값에 해당하는 명령부터 끝까지 실행해버린다.
제어문 break!! (수식의 데이터 값 : 정수(byte, short, int), … )
- switch블럭, 반복문 블럭 내에서 사용.
- break를 감싸는 불럭을 벗어나는 역할.
if~else if~else문
- 서로 연결된 조건식을 표현할 때 사용, 필터링, 수의 범위표현
- 형식
if( 조건식 ) { //조건식1이 참일때 실행할 문장; } else if( 조건식2 ) { //조건식1이 거짓이고, 조건식2가 참일때 실행할 문장; } else if( 조건식3 ) { //조건식1,2가 거짓이고 조건식3이 참일때 실행할 문장; }else { //조건식1,2,3이 차례대로 거짓일때, 실행할 문장; }
class 클래스명
{
//변수선언
int su;
boolean flag;
double d;
String str;
A obj;
//메소드 정의
리턴형 메소드명( )
{
// 변수선언 int min;
// 변수초기화 su = 300; min = 0;
// 메소드호출 System.out.println("안녕");
// 조건문 if(조건식) { }
// 반복문
6;
for( ) {7;}
8;
9;
} //메소드
} //클래스
<반복문> Loop
for문
- 일정횟수 반복할 때 사용
- 규칙적인 수를 표현할 때 사용
- 배열의 인덱스를 표현할 때 사용
[형식]
for( 초기화; 조건식; 증감연산자 ) { //반복적으로 실행할 문장; } =>> 실행순서) 초기화 -> 조건식 -> 실행문 ->증감연산자 -> 조건식 -> 실행문 ->증감연산자 -> 조건식 -> 실행문 ->증감연산자 -> false -> for문 탈출!
for(int i = 0; i < 5; i++) { System.out.println( "안녕" ) }
class ForTestTest { public static void main(String[] args) { A a = new A(); a.one(0); a.two(0); a.three(0); a.four(0); a.five(0); } } class A { void one( int i ) { for( i = 1; i < 6; i++) { System.out.println(i); } System.out.println("====="); } void two( int i ) { for( i = 1; i < 6; i++) { System.out.print( i + " " ); } System.out.println(); System.out.println("====="); } void three( int i ) { for( i = 5; i > 0; i--) { System.out.print(i+ " "); } System.out.println(); System.out.println("====="); } void four( int i ) { for( i = 3; i < 13; i+=3) { System.out.print(i+ " "); } System.out.println(); System.out.println("====="); } void five( int i ) { System.out.print("["); for( i = 5; i <= 20; i+=5) { System.out.print( " " + i ); if(i<16) System.out.print(","); } System.out.print(" ]"); } }
while문
조건이 참인동안 반복실행
조건이 만족되지 않는다면 한번도 실행되지 않을 수 있고 조건이 만족된다면 언제든 쓰일 수 있다.
실행횟수 0 ~ 무한대 (if문의 경우 0또는 1)
반복되는 횟수가 일정치 않을 때 사용
서버의 리스너를 표현할때 =>> 무한 반복할 때
형식
while(조건식) { //조건식의 결과가 참인 동안 }
class WhileTest { public static void main (String[] args) { int i = 1; int sum = 0; while(i < 11) //무한 루프, 반복 { sum+=i; i++; } System.out.println("1부터 10까지 더한 값은 " + sum); } }
do ~ while문
while문과 동일
차이점 : 조건식의 결과와 상관 없이 무조건 한번은 실행한다, 실행횟수 : 1 ~ 무한대
[형식]
do { 반복실행할 문장 }while(조건식); //세미콜론 무조건 달아줘야 한다 주의할 것!!!!!!!!!!!!!!!!
class DoWhileTest { public static void main(String[] args) { //문제) "Hello World"를 화면에 3번 출력하시오.(단, do~while이라는 반복문을 사용) boolean flag = true; int count = 1; do { System.out.println("진푸 풍덩~!"); //벗어날 수 있는 방법 두가지 여기서는 flag를 false로 바꿔주거나 break; if(count++ == 3) { break; //flag = false; } } while (flag); //1부터 10까지의 합을 출력하시오 (do~while사용) int su = 1, sum = 0; do { sum += su; if(su < 10) { su++; continue; } flag = false; }while (flag); System.out.println(sum); } } //예시가 좋은 문제는 아니다.
<제어문>
- break문
- switch블럭 또는 loop블럭(for, while, do~while)내에서 사용하며 해당 영역을 빠져나가는 역할.
- 사용 : break;
- continue문
- 반드시 loop영역내에서만 사용
- loop영역의 끝괄호 역할
- for : 증감자 => 조건식
- while : 조건식
- do~while : 조건식
- 사용 : continue;
나의 궁금점 Q!
- if, else할때 실행문이 한줄일 때 영역괄호(스코프) 하는게 좋을까 안하는게 좋을까?
검색 안됨, 모르겠다, 근데 하는게 좋지 않을까? 한줄짜리 긴 코드를 스코프 안에 넣어놔야 나중에 좋을거 같다는 막연한 생각이 든다.
- 변수 % 2 == 0이 좋을까 변수 % 2 != 1 이 좋을까?
https://ict-nroo.tistory.com/11
위의 링크의 글을 참조하니 위의 방법보다는 변수&1 = 1이면 홀수, 0이면 짝수의 방식이 더 빠르고 좋은 방식이라고 생각된다.
- case 뒤에는 상수만 들어갈 수 있다! 상수만 들어간다면 문제가 없다.
final int j = 4; //변수면 에러남, 반드시 상수
switch(i)
case j :
- break마지막에 안해도 되지만 메모리 리소스 먹는거 아닌가?!
리소스를 더 먹는 등의 문제는 없는거 같은데 유지보수 측면에서 나중에 추가할수도 있으니 웬만하면 추가 하는게 좋은것 같다.
https://stackoverflow.com/questions/2729813/switch-statements-do-you-need-the-last-break-javascript-mainly
- case문에 long은 왜 안될까?
자바8 버전부터 String은 된다!
- case문에 조건에는 뭐가 들어갈 수 있을까?
byte, short, int 확인 완료 short은 안된다.
- if문과 switch문 속도와 효율은?
조건문이 4개 이하이면 if, else if가 좋지만
조건은이 5개 이상이라면 switch case문이 더 효율이 좋다.
- for문 안에 if while문 안에 if 등 중첩시 문제?! 효율?!
중첩되면 좋을리는 없다, 연산횟수의 증가로 효율을 감소시키고 에일리언코드가 되버릴 수 있다.
- 반복조건에
- do~while에 대해서 어떤경우에 유용한지
do while은 어셈블리 언어로 변환하면 for와 while보다 jump연산이 1개 적게 쓰여서 조금 빠르다고 함. 하지만 do while의 경우 하단에 조건이 위치되어 있어서 가독성이 안좋아서 논리를 꼬아버릴수도 있음.최초 1회 보장하려고 굳이 써야 할지는 모르겠음.
'클라우드 기반 웹 개발자 과정 공부 > JAVA' 카테고리의 다른 글
190415 Day6 이클립스 설치, 접근지정(제한)자, 자기참조연산자, 인터페이스, final, 클래스와 인터페이스 간의 상속 문법 (0) | 2019.04.15 |
---|---|
190412 Day5 Escape Character, printf, OOP, 오버라이딩, 오버로딩, 생성자 (0) | 2019.04.12 |
190411 Day4 자바의 입력 (0) | 2019.04.11 |
190408 Day2 주석문, 구성요소 사용법, 연산자, 조건문1 (0) | 2019.04.09 |
190408 Day1 (0) | 2019.04.08 |