[구디아카데미 후기]DAY12 연산자, 제어문

NA YE SOM·2023년 7월 13일
0
  • 제어문에서 Swtich문이 어려웠는데 강사님이 내주신 여러 연습문제들을 풀면서 복습하는 시간을 가져야겠다.

복습



-> 나누기 : 정수 , 실수 분리 공부

Short Circuit Evaluation

-조건 3개 : 첫번째 조건이 false나오면 -> 2,3번째는 보지도 않음



-> ++j 동작하지 않음


-> 10과 10 비교후 j는 11로 바로 늘어난다

ex05 메소드 정의


-> 항이 앞뒤로 2개 : 이항연산
(EX) 2 + 2 = 4

-> 단항연산

-> !(TURE) OR !(FALSE) : 단항연산


-> 삼항 연산자 (3개의 항)


ex06 문자열 연결 : 더하기



-> 숫자랑 연결도 가능

-> 왼쪽에서 오른쪽으로 앞에꺼 먼저 함 : 3번지



-> 빈문자열을 더해주면 문자열이 됨 -> 연결하는것이 없으니
-> 100은 그대로 남음 -> 성질만 문자열로 됨


(위에가 더 쉬워서 잘 쓰지는 않음)


초를 분/초로 바꾸기



-몫을 구하는 연산자 : /, 나머지 구하는 연산자 : %

y값이 temp에 전달되는 동안,

3. 5% 이자 받으려면 통장잔액이 얼마?(소수 이하는 버림)




-> 복합 연산자

10으로 나눈 방법도 활용가능


-> 10으로 나눠서 9가 나오면 : 몫 -> 90점대구나 생각할 수 있음

-> 나머지 연산자 %


1.3의 배수 먼저 체크(3의 배수는 짝, 홀이 섞여있어서)

2.3의 배수가 아닌 숫자 대상으로 -> 짝, 홀 판별하기


-> 가능(나머지 0나옴) : 3으로 나눴을때 나머지 0인 수 : 0도 포함(0도 3의 배수가 나올 수도 있음)


-> 불가능 (exception 발생)


-> 3의 배수가 아니라면
짝, 홀 이자리에서 구분 시작








오류나는 이유? 타입이 안맞아서
balance long 타입
1+pct : double 소수점이 하나라도 끼면 balance도 소수점으로 바뀜
-> long은 소수점을 자동으로 넘기는 것 못함(자바가 혼자 할 수없음)
balance * ( 1+ pct)-> 소수점

-> doudble를 long으로 바꿀 수 없음(casting해야함)



제어문

분기문

메소드를 만드는것 : 정의 (메인메소드 정의는 개발자가 함)

메인 메소드 호출 : 자바가 함
-> 메인메소드는 만들어두기만 하면 됨


-> 메소드 만들기

-> 메소드 호출

삼항 연산자( 60 이상이면 합격, 아니면 불합격) -> if문

IF

앞으로 배워야하는 다른 언어들은 'ELSE' 지원하지 않음

JSTL(자바 조건식을 쓸 수 있는 태그를 넣을 수 있음 -> ELSE없음 - IF 만 쓸 수 있음)


-> {중괄호} 실행문이 하나이면 생략 가능


-> && AND는 안됨



switch





-> default는 마지막 실행문이라 break없어도 끝냄

case더이상 한번 처리되면 존재하지 않는것으로 취급해버림
-> break없으면 2개 실행시켜버림



★ 실무


String이 많을 예정
-> controller(컨트롤러) 주소창에 주소들어올때, 어떤 주소를 누가 처리할 건지 구분해주는 역할

case는 최초 진입 시점만 제공 -> break 만나거나 끝까지 하시오
switch(String : 주소) -> 주소에 따라서 수행하고 싶은 서비스 호출하는 것

  • 원래는 어떤 클래스에 있는 어떤 메소드를 호출하겠다(★ 실무)
    -> 메소드가 다른 클래스에 있음

★★for문 : 연속된 숫자를 생성하기 위한 목적 (실무,회사에서 많이 씀)


-> 초깃값 한번 제외 ) 조건문 -> 실행문 -> 증감문 -> 조건문


-> 반복문의 70~80% 이상 for 문

10보다 작거나 같은 숫자

10 출력한 뒤 n = 11 , 11<10 만족 x
-> for문 나와서 종료

n <= 10 10까지
n < 10 9까지

★ 1924~2023 100개의 숫자 -> for문 씀




-> 어떻게 하면 5번 늘릴 수 있을까?


-> '횟수'만 보는것!

-> 횟수 처리할 수 있는 일반화된 하나의 식으로 공부하기!!

-> 개수 세는 건 "0"에서 시작해야 한다.
-> n=1로 놓고 시작하면 안됨

★ 생각을 안하고 적을 수 있어야 함


-> count 10이 들어면 열번 동작, 100들어가면 100번 동작함

while문 -> 몇번을 반복할지 모르는 상황(많이 쓸 일없음 : 70~80%이상 for문을 씀)


-> for문은 연속된 숫자를 만들어냄 , while은 특정 조건을 만족하면 계속 함

  • 한행식 처리하겠다 -> 이때는 while문 씀

if는 만족하면 한번만 함, while무은 조건 만족하면 실행문 계속 함


-> n=0인데 영원히 10보다 작음

n = 0 (초깃값), while (n<10) 조건문 2개는 있지만
증감문이 없다

-> 횟수는 10번, 0~9까지 나옴

do while

while문이 한번도 실행안될 수 있는 경우?


-> do while문으로 바꾸면 한번은 무조건 함(int n = 140넣어놓아도)

-> ;(세미콜론) 들어가면 완성

-> 한번은 무조건 하고 더 할건지 체크

요즘 개발자 스타일) for문 자동으로 돌리는 코드 바꿔서 쓰기(자동으로 for을 돌려주는 것) - 람다식, 스트리밍

break문

초기값 안적음 ; 조건문 안적음;

-> 프로그램을 실행시 끝이 없는것 ) 대부분임(내가 끝내고 싶을때 끝내는 프로그램임)
-> 끝내고 싶을때) if문으로 집어넣어서 break넣어서 끝낼 수 있음

10출력하고 끝내기

int 21억 4천 7백만까지

★ 좋은 코드작성 스타일 : 초반에 해석이 편한자리에 명시할것

(이 무한루프는 언제끝나는지 명시하기)


-> 여기서 10을 사용했을때까
n 출력하면 n이 11이 됨

(1) 같다

(2) 부등호 (더 많이 사용됨)


continue문



7은 continue만나서 바로 올라가서 8로 됨

{중가로} 생략하지 말기

중첩

-for문 안에 for문 또 있음
-while문 안에 while문 또 있음

for 1개 - 일차원, for 2개 -이차원, for 3개 -삼차원

주석처리하는 자동 단축키 : ctrl + /


연습문제

ex01() if문> 점수에 따른 학점

ex02() switch문>

-> true, false 사용 못함

switch 문
1. 지정된 표현식의 결과에 따라 분기 처리한다(true/false에 의한 분기처리가 아니다.)
2. 일반적으로 if문에 비해서 가독성이 좋다(코드가 잘 읽힘)
3. 각 분기를 구분하는 case와 default로 구성된다
4. break를 통해서 switch문을 종료시킬 수 있다


-> else가 90이상 아니면 이라고 명시하고 있기에
score < 90 안적어도 됨




-> 점수를 10으로 나눠서 몫을 확인할 수 있다(얼마인지)

ex03() 점수와 학년에 따른 점수(if else)



-> default 나머지 모든 경우

-> 끝나라고 이야기 할 필요는 굳이 없음
-> default에는 적을 필요 없음

ex03_2() 점수와 학년에 따른 학점(if else)-최소점수



-> 둘이 같으면 2번 적지 않음
(2) if문 2개(if 중첩은 아님)
_(밑줄) 메소드 이름에 쓸 수 있음
-> 실제 상황이면 ) 삼항연산자로 해결했을 듯

★ 실무 : (점수) 오라클 DB에서 할 가능성이 높음
-> 자바에서는 점수 전달만 함

ex04 switch문> 메뉴에 따른 가격

(1)

(if로 못하는 이유)
->자바에서는 string 비교를 이렇게 할 수 없음

문자열은 같다 같지 않다를 연산자로 비교할 수 없다

-> 문자열 비교 가능 : javascript 가능
(자바, 자바스크립트 : 제어문은 거의 같음)

profile
개발자 velog

0개의 댓글