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일에 새로운 링크를 내려 주시면 수정 해야 할것 같습니다  : )

 

 

+ Recent posts