SW/Java

[필기정리] Day2 - 연산자, 반복문 등

coderbear_16 2020. 6. 19. 22:12
for(i=0;i<3;i++)
{
	System.out.println("Hi");
    System.out.println("Bye");
}


/* Hi
   Bye 출력
*/   

#Boolean : true와 false로 이루어진 논리형 데이터타입

boolean result;
result=5>3; //true
result=5<3; //false
System.out.println(result);

 # 연산자의 종류

- == : 같다

  ↕

- != : 같지 않다

- ! : not의 의미 (true → false로 false → true로 반대로 만들어준다)

 

i=i+2; // i+=2;
i=i-2; // i-=2;
i=i*2; // i*=2;
i=i/2; // i/=2;
i=i%2; // i%=2;

- 좌측과 주석 내용은 의미가 동일하다.

- %는 나머지 를 구할 때 사용한다.

 

// Tip : i=i+1과 i++;은 의미 상 동일하나 후자가 더 효율이 좋다.

 

# 증감연산식

ex)

int num1=10;
num1++;
System.out.println(num1);

int num1=10, num2=10;
int result1=0, result2=0;

result1=++num1;
result2=num2++;

System.out.println(num1+" "+num2);
System.out.println(result1+" "+result2);

★ 증감연산식 : 대입과 함께 쓰일 때 선치 - 증가 후 대입

                                                후치 - 증가 전 대입

 

// Tip : 변수나 클래스명은 숫자로 시작할 수 없다($, _ 제외)

 

#do ~ while문

int i=10;
do
{
	System.out.println("Hi"); 
}
while(i<3);

// 결과 : Hi 1번 출력

- 순서

① do

{} : 블럭 내의 내용 

③ while(조건);

- ① → ② → ③    ③ 순으로 조건이 거짓이 될 때까지 반복된다.

 

★ for, while 선체크반복문(조건이 맞지 않으면 1번도 실행하지 않는다)

    do while  후체크반복문(조건이 맞지 않아도 1번은 반드시 실행된다)

 

- 반복문 예시문제

ex1)

int i=0;
for(i=0;i<3;i++)
	System.outprintln("Hi");
    System.outprintln("Bye");  
    
    /* 결과 : Hi 
    		 Hi	
             Hi
             Bye 출력
     */

- 반복문에 {}가 없으면 바로 아래 한 문장만 소속되었다고 인지하여 가장 첫 줄만 실행됨

 

ex2)

int i=0;
for(i=0;i<3;i++);
{
	System.outprintln("Hi");
    System.outprintln("Bye");  
}

    /* 결과 : Hi
             Bye 출력
    */

- for문 뒤를 바로 ;로 닫아주는 경우 )와 ; 사이에 빈 명령문이 있다고 자바가 판단함

 

★ for( ; ; ) : 조건이 없는 경우 true로 인식

                ( )안에 내용이 없는 것은 가능하나 ;가 없으면 컴파일 에러 발생함

    while( ); : 반드시 조건이 필요함, 비워진 경우 컴파일 에러 발생함

                 증감식이 밖에 존재하기 때문에 while( );나 while(true) 시 무한루프 발생함

 

// Tip : 조건에는 true, false, 저 둘을 반환하는 조건만 가능하다.

 

#상수 : 변하지 않는 수

- 리터럴 콘스탄트(literal constant) ex) 5 3 2.2 -5

  심볼릭 콘스탄트(simbolic constant) : 변수를 상수로 만드는 것

- 상수는 딱 한 번만 초기화가 가능하다 (이후 시도 시 에러 발생)

final int MAX=5;

- final : 상수를 지정하는 키워드

- 상수명은 전체를 대문자로 표기해야 한다.

 

# if, else if, else

if(5>3)
	System.out.println("Hi");
else if
else

-if : 가장 먼저 작성해줘야 한다

- else if : if가 거짓인 경우 실행된다.

            위의 if가 참이면 else if가 참이어도 실행되지 않는다. (if와 하나로 묶이는 것)

- else : if와 else if가 거짓인 경우 실행된다. 조건이 붙지 않는다.

 

//Tip : else if와 else는 반드시 위에 if가 존재해야 사용이 가능하다(단독 사용불가)

 

#스캐너 사용방법

import java.util.Scanner;
class SCTest
{
	public static void main(String[] args)
    {
    	Scanner sc = new Scanner(System.in);          //스캐너를 생성
        int n1=0, n2=0;
        System.out.println("첫 번째 숫자를 입력하세요");
        n1=sc.nextInt();                              //Int는 반드시 대문자로 작성할 것
        System.out.println("두 번째 숫자를 입력하세요");
        n2=sc.nextInt();
		System.out.println("입력한 두 수는"+n1+","+n2+"입니다.");
        sc.close();
     }
}     

Q. 임의로 주어진 5개의 수를 오름차순으로 정렬하시오.

A. 

int n1=5, n2=4, n3=1, n4=3, n5=2;
int temp=0;
if(n1>n2)
{
	temp=n1;
    n1=n2;
    n2=temp;
}    
if(n1>n3)
{
	temp=n1;
    n1=n3;
    n3=temp;
}      
if(n1>n4)
{
	temp=n1;
    n1=n4;
    n4=temp;
}
if(n2>n3)
{
	temp=n2;
    n2=n3;
    n3=temp;
}
if(n2>n4)
{
	temp=n2;
    n2=n4;
    n4=temp;
}
if(n3>n4)
{
	temp=n3;
    n3=n4;
    n4=temp;
}  
if(n3>n5)
{
	temp=n3;
    n3=n5;
    n5=temp;
} 
if(n4>n5)
{
	temp=n4;
    n4=n5;
    n5=temp;
} 

System.out.println(n1+" "+n2+" "+n3+" "+n4+" "+n5);

- 선택정렬(셀렉션소트)

  ex) 음료 위치 옮기기

  A음료와 B음료의 서로의 위치를 바꾸려고 할 때 빈 잔이 필요하듯이 temp를 빈 잔처럼 변수선언하여 사용하는 것

 

//Tip : 문자열과 숫자가 혼용되어 사용된 경우

System.out.println("Hi"+5+3);

/* "Hi"+"5"+"3"
	결과 : Hi53 */
System.out.println("Hi"+(5+3));

/* "Hi"+(5+3)
	결과 : Hi8 */ 

- 소괄호가 연산자 중 우선순위가 가장 높기 때문!

 

#continue vs break

- continue : 반복문 안에서 흐름을 바꾸어주는 것, 스킵(해당 라인을 실행하지 않기 때문)

                continue를 만나면 아래 문장들을 실행되지 않는다. 

ex1) for문 + continue

int i=0;
for(i=0;i<10;i++)
{
	if(i>5) continue;
    System.out.println("Hi");
}
 	System.out.println(i);

ex2) while문 + continue

int i=0;
while(i<10)
{
	if(i>5) continue;
    System.out.println("Hi");
    i++;	
}

 

- break : 반복문 종료

ex1)

int i=0;
for(i=0;i<10;i++)
{
	if(i>5) break;
    System.out.println("Hi");
}

//결과 : Hi 6번 출력 후 반복문 종료

ex2)

int i=0, sum=0;
for(i=1;true;i++)
{
	sum+=i;
    if(sum>5000)
    System.out.println(sum);
    break;
}

 

#&&연산자 vs ||연산자

- &&(and 연산자) : 둘 다 참일 때 참으로 인식하는 연산자

ex)

int i=1;
for(i=1;true;i++)
{
	if(i%5==0)           
    {
    	if(i%7==0)
    	{
        	System.out.println(i);
    		break;
        }
    }   
}

 - if(i%5==0 && i%7==0)로 &&연산자를 사용하여 동일하게 표현할 수 있다.

   (병렬구조는 논리이므로 묶어서 표현 가능, or도 마찬가지로 가능하다)

 

- ||(or 연산자) : 둘 중 하나만 참이어도 참으로 인식하는 연산자, 거짓은 전체가 거짓이어야 함!

int i=0;
for(i=1;i<=20;i++)
{
	if(i%2==0)continue;        
    if(i%3==0)continue;
	System.out.println(i);
}

- !(not 연산자)

int i=1, cnt=0;
for(i=1;i<=100;i++)
{
	if(i%5!=0)continue;        
    if(i%7!=0)continue;
    cnt++
	System.out.println(cnt+" "+i);
}

#주석

- //(한 줄 주석) : 필요한 내용을 적는 메모 기능, 컴파일에서 무시된다

- /* ~ */(여러 줄 주석) : /*와 */ 사이의 내용은 컴파일에서 무시된다

  ㄴ ex) 개발자 : ㅇㅇㅇ

           버전 : v0.1

           최종수정일 : 2020.06.11

728x90