13. 자바의 연산자들 -3 (조건 연산자, 비트 연산자)
강의 내용 정리
조건 연산자
삼항 연산자
조건문을 간단하게 표현할때 쓰이는 문법
조건식 ? 걸과1(true) : 결과2(false)
int num = 5>4 ? 10 : 20;
System.out.println(num);
// 10 출력
입력받기.
정상적인 입력과 출력의 자바 IO를 배우기 전에. 학습도중에서 콘솔에서 입력받기 위해 임시방편으로 입력받는 방법.
system.in : 표준 입력 / system.out : 표준 아웃
scanner : util이라는 페키지 안에 들어있다.
import : 사용하려는 클레스(메소드: 명령어)가 어떤 라이브러리에 들어있는 것이다. 라는 것의 표현
더 큰수를 출력해 보자
Scanner scanner = new Scanner(System.in);
System.out.println("num1:");
int num1 = scanner.nextInt();
System.out.println("num2:");
int num2 = scanner.nextInt();
int max = (num1>num2)? num1 : num2;
System.out.println(max);
비트연산자
비트 단위의 연산을 위한것
진법에 상관없이 모든 값을 2진수로 변환시켜 논리 게이트를 통과 시킨다.
조금더 빠른 작동을 위해 사용됨
마스크 : 특정 비트를 가리고 나머지 비트로 사용할때
메모리에 저장되어있는 비트를 읽을때. 특정 메모리만을 마스킹해서 AND게이트로 1만 넣어 결과값으로. 메모리 값을 확인한다.
비트켜기 : 특정 비트들만을 1롤 설정해서 사용하고 싶을때.
비트 끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을때.
특정 메모리 영역에 0만 넣고 AND게이트의 출력값을 입력해서 메모리 값을 0으로 만든다.
비트 토글 : 0 은 1로 1은 0으로
& : AND GATE
int num1 = 3; // 0011
int num2 = 5; // 0101
System.out.println(num1 | num2);
// 0111
// 7
| : OR GATE
^ : XOR(Exclusive OR)
int num3 = 6; // 0110
int num4 = 8; // 1000
System.out.println(num3 ^ num4);
//XOR(exclusive OR)
//1110
//14
~ : 반전시키기 (NOT)
<< >> 시프트
값에 변화를 줄때 <<= 같이 대입연산자를 사용
int num5 = 11; // 1011
System.out.println(num5 << 1); // 1비트만 밀기
//10110
//16+4+2 = 22
시프트 계산 하는 방법
int num6 = 5;// 0101
System.out.println(num6 << 2);
//10100
//20
//계산방법 : 5(num6)*2의2(rvalue)승 , 왼쪽 시프트에서는 2의 rvalue승을 나눔
~(틸드 키) : NOT
int num7 = 7; // (0:부호)011
System.out.println(~num7);
// (1:부호)0100
// 가장 앞의 비트가 부호 비트이므로 부호가 거꾸로 뒤집힌다.
// 값 비트는 2진구에서 전부 뒤집힐때 1이 증가 하기 때문에 값에 +1이 된다
연산자의 우선순위
연산자의 우선순위는 분명하게 정해져 있지만 괄호를 사용하는것이 기독성이 좋아지기 떄문에. 먼저 계산 되는것에 괄호를 사용하는것이 좋다.
14. 조건문 - if 문(만약에... 라면)
강의 내용 정리
제어문 : 조건식 과 수행문 으로 사용한다.
조건식 : if 문에서는 true false 의 출력값을 확인할수 있는 관계연산자가 사용 된다.
수행문(statement)이 짧고 한줄 이라도 줄 바꿈과 들여쓰기를 해서 가독성을 높일수 있다.
flow chart 에서 조건은 마름모 , 항(값)은 내모로 표시한다.
15. 조건이 여러 개 일 때의 if 문
강의 내용 정리
조건이 어려개 일때 마지막 else는 적지 않아도 기능한다.
int a = 1;
if(a == 2 ) {
System.out.println(a);
}else if(a == 3) {
System.out.println(a);
}{
System.out.println("성공");
}
// 출력 : 성공
else는 default 수행문으로 사용한다. _1
A = 1
1. A = 2인가?
1. A = 3인가?
else {A는 1이다}
// 출력 : A는 1이다.
else는 default 수행문으로 사용한다. _2
e혹은 변수에 값을 대입하지 않고 선언만 한후변수를 사용해야 할때 오류가 발생하지 않도록.
else문 안에 사용할 변수의 기본값을 입력하는 방법을 사용한다.
if if if 는 수행문이 상호 배타적이지 아닐경우 동시 작동 시킬수 있다.
else if else if 문은 수행문이 상호 배타적일 경우 한번만 작동 시킬도록 사용한다.
16. 조건이 여래 개 일 때 간단히 표현되는 switch-case 문
강의 내용 정리
조건식의 결과가 스위치 케이스문에서 정리해 놓은 case값과 동일할때 case에 해당하는 명령이 실행된다.
default -> 기본값
자바 14부터는 아래 조건식이 가능해 졌습니다.
int a = 1;
switch (a) {
case 1,2,3,4,5: {
System.out.println("정답");
}
}
int a = 1;
switch (a) {
case 1: case 2 :case 3 :case 4 :case 5: {
System.out.println("정답");
}
}
화살표는 람다식에서도 사용하지만. 화살표에는 default는 사용하지 않습니다.
int a = switch(){
}
switch 에서는 return 대신 yield를 사용합니다.
int studentNum = 2;
String name = switch(studentNum) {
case 1,2,3,4,5 ->{
yield "나";
}
default ->{
yield "없음";
}
};
System.out.println(name);
// 출력 : 나
17. 반복문 - while문
맴버변수와 지역변수
블럭{} 안애 있는 변수는 자동으로 기본값이 들어있지 않기 떄문에. 값이 초기화 되어있지 않을때 +나 -등의 사용이 어렵다. 자세한 내용은 객체를 공부할때
18. 반복문 - do-while문
강의 내용 정리
조건을 채크하기 전에 한번 실행 시키고 조건이 맞으면 반복이 수행됩니다.
do의 수행문을 먼저 입력한뒤 while의 조건문을 입력하는 순서로 입력된다.
과제 : 입력받은 값이 0이 아닐때까지 값을 받고. 0이 입력되면 지금까지 입력된 값의 합을 출력
int total = 0;
int num =0;
do {
System.out.println("수:");
num = scan.nextInt();
total+=num;
}while(num!=0) ;
System.out.println("총: "+total);
19. 반복문 - for문
강의 내용 정리
반복문 문법중에서 가독성이 좋다.
과제 : 1~10까지의 합을 구하시오. while문 코드와 for문 코드의 비교.
//while
int total = 0;
int count = 0;
while(count < 10) {
total+=count+1;
count++;
}
System.out.println(total);
total = 0;
count = 0;
while(true) {
count++;
total+=count;
if(count==10) {
break;
}
}
System.out.println(total);
//for
total = 0;
for (int i = 0; i < 10; i++) {
total+=i+1;
}
System.out.println(total);
반복문의 사용 환경
while : 조건이 참일경우
do - while : 조건이 참일경우 ( 한번은 꼭 실행 되야 하는 경우)
for : 초기값의 증감을 이용하는 경우
for문의 문장생략.
1. int i = 0 ;for( ; i< 5 ; i++){}
2. for(i = 0; i<5 ; ){i++}
3. for(;;){} // 전부 생략하면 무한 반복문으로 사용할수 있습니다.
20. 반복문이 여러 번 포개진 중첩 반복문
강의 내용 정리
for문의 처리속도 표시
for문의 경우 단일 실행 속도(n의 x제곱으로)
for문의 갯수에 따라서 x의 양이 증가.
과제 : 2단부터 9단까지 출력해봅시다. (for문, while문)
for문 : 구구단
for (int i = 2; i < 10; i++) {
System.out.println(i+"단");
for (int j = 1; j <10 ; j++) {
System.out.printf("%1d X %1d = %2d \n",i,j,i*j);
}
}
//과제 : for while 문으로 곱셈 하기
int dan = 2;
int rvalue = 1;
for (; dan <= 9; dan++) {
rvalue = 1;System.out.println(dan+"단");
for (; rvalue <=9 ; rvalue++) {
System.out.println(dan+" X "+rvalue+"="+(dan*rvalue));
}
}
while문 : 구구단
int dan = 2;
int lvalue = 1;
while (dan <= 9) {
System.out.println(dan+"X"+lvalue+"="+dan*lvalue);
lvalue++;
if(lvalue==10) {
dan++;
lvalue=1;
}
}
21. 중간에 멈추는 break문, 무시하고 계속 진행하는 continue문
강의 내용 정리
break 와 continue
break : 자신을 감쌓고 있는 하나의 계층의 반복 블록에서 빠져 나온다.
continue : 반복문의 조건체크하는 쪽으로 넘어가서 다시 조건을 확인합니다.
과제
1부터 1씩 추가된 수를 계속 더했을때. 100이 넘는 순간에 정지 시키기.
for while break 의 사용예 에서의 차이.
//100을 넘기면 정지시키기
//1. for문
int j = 0 ;
for (int i = 1 ; j < 100 ; i++) {
j+=i;
}
System.out.println(j);
//2. while문
int a = 0;
int b = 1;
while(a<100) {
a+=b;
b++;
}
System.out.println(a);
//3. break문
int val = 0;
int count = 1;
while(true) {
val += count;
count++;
if(val >100) {
break;
}
}
System.out.println(val);
강의 코드 연습
int num ;
int sum = 0;
for (num = 1; ; num++) {
sum += num;
if(sum>=100)
break;
}
System.out.println(sum);
continue
//1~ 100 중에 3의 배수
for (int i = 1; i <= 100; i++) {
if(i%3==0) {
System.out.print(i+" ");
continue;
}
}
System.out.println();
for (int i = 1; i <= 100; i++) {
if( (i % 3 ) != 0 ) continue;
System.out.print(i+" ");
}
개발 영어 어휘
학습 타이머
시간을 목표로 하지 않고 단원을 목표로 학습
캠 스터디
스터디 그룹
https://open.kakao.com/o/g1mXVySd
패스트캠퍼스_한번에 끝내는 Java/Spring
open.kakao.com
오픈채팅방 사용법 예시)
1. 모르는것 마구 마구 질문하기
2. 데일리미션 자랑글 올리기 ^ω^!
3. 다른 분들이 데일리미션 블로그에서 정리한 글들을 살펴보고 이해가 않가는 부분 참고 하기
온라인 강의 주소
패스트 캠퍼스에서 공지한 링크가 막혔습니다. 17일에 새로운 링크를 내려 주시면 수정 해야 할것 같습니다 : )
'학습방법 > 데일리 미션' 카테고리의 다른 글
[ 패스트캠퍼스 챌린지 - 11일차 ] 2:2:04 ~ 2:2:06 (0) | 2022.01.12 |
---|---|
[ 패스트캠퍼스 챌린지 - 12일차 ] 2:2:01 ~ 2:2:03 (0) | 2022.01.11 |
[ 패스트캠퍼스 챌린지 - 14일차 ] 1:1:11 ~ 1:1:12 (0) | 2022.01.09 |
[ 패스트캠퍼스 챌린지 - 15일차 ] 1:1:10 (0) | 2022.01.08 |
[ 패스트캠퍼스 챌린지 - 16일차 ] 1:1:08 ~ 1:1:09 (0) | 2022.01.07 |