이번엔 switch  와 case, for, while, continue문을 볼거에요.




첫번째로 switch case 뭔가 감이 오시나요? 


switch 스위치 들어보셨죠.. 스위치 불 키고 끄고 할수 있는 스위치.


case 이런케이스 저런케이스, 경우를 뜻하는거 같구요!


소스 보고 가시죠!


public class test {

public static void main(String[] args) {

int n = 3;

switch(n)

{

case 1:

System.out.println("1");

break;

case 2:

System.out.println("2");

break;

case 3:

System.out.println("3");

break;

default:

System.out.println("not");

}

}

}


결과는 

3 입니다.


소스에서 switch 옆에 괄호 속에 n이 있죠?


그건 위에서 선언한 int 형 변수입니다.


그걸 이런케이스 저런케이스 그곳에 맞춰보는거죠.


n은 3이라고 선언이 되어있으니,


case 중에서 3이라는 경우로 가서 그걸 실행해주고 break문을 만나서 가장 가까운 중괄호를 빠져나오게 됩니다.




default는 케이스들이 아무것도 맞지 않다면 그때 실행되는 것입니다.


여기서 break들이 왜 나오냐 하면 case문은 맞는 조건을 찾게되면 그밑으로는 쭉 실행하게 됩니다. 직접해볼게요!


소스!


public class test {

public static void main(String[] args) {

int n = 1;

switch(n)

{

case 1:

System.out.println("1");

case 2:

System.out.println("2");

case 3:

System.out.println("3");

default:

System.out.println("not");

}

}

}


결과 : 

1

2

3

not


이렇군요 ㅋㅋ

break는 꼭 써주셔야 조건에 맞는 행동을 하고 빠져나온다는것 알고계세요!




이젠 for문과while문 보여드릴게요.


for = ~동안 while = ~동안 


의미가 둘이 비슷한 느낌이죠? 프로그래밍에서도 그렇습니다. 옆에 괄호가 들어갈때 들어가는 내용이 좀 다르긴 하지만요..ㅋㅋ


소스 보여드릴게요.


public class test {

public static void main(String[] args) {

int n=0;

for(int i=0;i<5;i++)

System.out.println(i);

while(n<5)

{

System.out.println(n);

n++;

}

}

}


결과 : 

0

1

2

3

4

0

1

2

3

4


01234 가 두번나와있죠?

이건 for문과 while문에서 똑같은 결과가 나온겁니다..

일단 보시면 for문 괄호 안에 int  i =0 이 있죠? 괄호 속에서 int 형 변수 i 를 생성한겁니다. 휘발성이에요. 

저 for 문이 끝나면 int i 는 찾을수 없게 됩니다.

세미콜론 옆을 보시면 i<5가 있죠? i<5일때 까지 실행하라는 겁니다.

그옆을 보시면 i++이 있죠? 밑의 소스를 한번 실행할때마다 i++도 같이 실행됩니다.

그래서 i가 증가하게 되고 i<5라는 조건에 맞지 않게 되어 for문을 벗어나게 되는겁니다.

그래서 i가 5가 되면 i<5 의 조건을 만족하지 못하기 때문에 튕겨져 나고오 while문으로 넘어가게 됩니다.



while문에선 괄호 안에 n<5가 있지않습니까? n<5일때까지 괄호속의 내용을 실행하는겁니다. for문하고 기능이 다를게 없지 않냐!

하지만 여기선 i++ 이런 걸 적어줄 필요가 없습니다. 그래서 코딩 실수 나오면 무한루프를 돌기도 합니다. ㅋㅋ

무한 루프의 뜻은 괄호속의 내용을 무한대로 실행한다는 뜻입니다.

강제로 무한루프를 돌고싶으시면


for(;;) 과 while(true) 을 하시면 됩니다. for문에 조건이 안들어가 있으면 무조건 참 while문에 조건이 true 면 무조건 참.


따라서 무한루프를 돌게 됩니다.




continue 문과 break문을 알려드릴게요.


아까 조금 설명해드렸는데 break문을 만나면 가장가까운 중괄호를 빠져나간다고 했죠? 가장가까운거라고 알고계시면 편하지만,


for,while,if이런 문구에 사용되는 중괄호만 빠져나오는 겁니다. 함수의 종료를 생각하시고 그 중괄호를 빠져나가려고 break를 하시면 뻘건줄이 


그어집니다..


함수를 빠져나가시려면 return; 이거만 붙여주시면 종료해버립니다.


여튼 break는 벗어나는 거죠?


하지만 continue는 중괄호의 맨위로 올라가서 다시 조건을 검사하게 됩니다. 아래의 소스들은 전부 무시하고 다시 위로 점프하게 되는겁니다.


쉽게 소스 보세요!


public class test {

public static void main(String[] args) {

int n=0;

while(n++<100)

{

if(n%5 == 0)

continue;

if(n == 13)

break;

System.out.println(n);

}

}

}


결과:

1

2

3

4

6

7

8

9

11

12


보시면 5의 배수경우는 없죠? 나머지 경우들은 있구..


if문에서 n을 5로 나눈 나머지가 0일땐 continue로 맨위로 올라가게 했거든여!


그리구 13은 없죠? 13을 만나면 break해서 끝내버리게 했거든요!


소스와 결과만 보시더라도 쉽게 이해가 가능하실꺼에요 ㅎㅎ



이번 포스팅은 여기서 마칠게요! 다음엔 c에서 배웠던  함수! 


java에선 메소드라고 불립니다. 이걸 공부해 볼게요! 다음포스팅에서 봐요~




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

안녕하세요! 이번포스팅은 무쟈게 쉽습니다!


보통은 특정 조건이 만족될때만 실행되는 그런 프로그램을 작성하잖습니까??


그럴때 if~else, 조건연산자, switch, break, for, while, continue 등이 있습니다.




첫번째로 if~else 를 설명해드릴건데


소스 보시죠!


public class test {

public static void main(String[] args) {

if(true)

{

System.out.println("true");

}

else

{

System.out.println("false");

}

}

}


결과 : true


이 결과는 영어를 살짝 해석만 할줄 아시면 금방 이해가 됩니다.


첫번째로 if는 '만약' 이라는 뜻이죠? 


if(true) 만약 참 이라면,,   


else는 '나머지' 비슷한 뜻을 가지고 있는거같아요.


따라서 else 는 if문이 참이 아니라면 실행되는 곳입니다. if문이 참이면 무시하고 넘어가게 됩니다.




근데 저기 if문과 else문 아래에 중괄호가 괜히 지저분해 보이는건 저뿐인가요...


if, else문에선 중괄호 안에 들어갈 작업이 한가지 뿐이라면,


예를 들면 위 예제와 같이 print문 하나 뿐이 없을경우!


이때는 중괄호를 삭제해도 됩니다. 이렇게 말이죠


public class test {

public static void main(String[] args) {

if(true)

System.out.println("true");

else

System.out.println("false");

}

}


결과는 똑같습니다. 이렇게 중괄호를 지우는건 함수안에 있는 조건문일때 가능한겁니다. 함수시작할때 쓰는 중괄호는 무조건 살려두셔야해요!


else if 문도 있는데 if문 외에 또다른 조건을 달고 싶을경우, else는 if문의 조건을 제외한 나머지경우에 실행되는거구 else if문은 꼭 if문 조건의 나머지 경우가 아니라 그보다 더 적은 범위의 조건을 정할수 있는 문법입니다.


else if(num<3) 요런식으로 말이죠! else if와 else는 사용하고 싶으시면 사용하는거고,


if문은 꼭 처음부분에 사용하셔야 합니다.


처음부터 else if 나 else 가 들어갈수 없다는 뜻이에요!




if문 쪽은 이정도면 된거같구..


다음으론 조건연산자 보여드릴게요.




조건연산자가 은근 헷갈리면서 기능이 파워풀해요! 


간단하면서 쓰기 편합니다. 소스보여드릴게요.


public class test {

public static void main(String[] args) {

int num1 = 100, num2 = 500;

int big, diff;

big = (num1 > num2) ? num1 : num2;

System.out.println(big);

diff = (num1 > num2) ? num1-num2 : num2-num1;

System.out.println(diff);

}

}


결과 : 

500

400


이렇게 나옵니다. 간단하게 설명드리면


num1과 num2가 있죠? 크기는 num2가 더 큽니다.


여기서 조건연산자를 해석해볼수 있는데요,


(num1 > num2) ? num1 : num2;


이렇게 되었을 때,


순서대로 보시면 num1 > num2 조건같죠? num1이 num2보다 크다.


물음표는 구분해주는 연산자 같구 num1:num2 이건 이해가 살짝 힘들죠..


결과를 보면 알수 있듯이 물음표를 기준으로 앞의 조건이 참이면 콜론(:)의 왼쪽을 리턴하고 조건이 거짓이면 오른쪽을 리턴하는 겁니다.


그래서 diff를 보면 절댓값을 계산할수 있게 되는거죠 ㅎㅎ


이렇게 보면 쉽죠? 나중에 해보려고 하면 까먹까먹...


많이 써보셔야합니다. 은근 유용하게 쓰이는곳이 많아요.




포스팅을 2개로 나눠서 써야할거같아요. 알려드릴 범위가 은근 많네요.ㅠㅠ


다음포스팅에서 봅시다!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5 - 1. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

double num1 = 20;


int num2 = 20.5;


소스를 적고 실행해보면 위는 되고 아래는 안될것이다!




이유는 데이터 손실때문인데 그러므로 형변환 규칙을 따라야 한다. 


아래는 형변환 규칙이다.




byte - short - int - long - float - double

   char -ㄱ


이런 식으로 된다. 쉽게 예를 들어보면


int형 데이터는 long, float, double형으로 형변환이 가능하다는것이다.


long num = 1; 여기서 1은 int형 데이터이지만 num 변수의 자료형은 long형이다.


그래도 데이터 손실없이 형변환이 가능하다는 것이다.


하지만,


int num = 2.5; 여기서 2.5는 double형 데이터이고 num 은 int형 이므로 데이터 손실이 발생한다.


생각해보자 double은 8바이트, int는 4바이트이다 당연히 차이나는 4바이트는 물론이고 그 이외의 손실이 있을수도 있지 않겠습니까!!




요약해보면 형변환규칙에서 한 자료형이 그 자료형의 오른쪽의 자료형의 변수에 인풋값이 가능하다는것.


요약이 안된거 같은데 ㅋㅋㅋ  int찍었으면 int는 int의 오른쪽에있는 long, float, double에만 형변환되어 인풋이 가능하다는것!




명시적 형변환도 있습니다. 데이터의 손실이 발생하더라도 문제없이 실행되는 문법입니다.


사용방법은


int num = (int)3.15


소수점이 떨어져 나가고 num에는 3이 저장됩니다.




연산자 굉장히 많죠 비슷한거도 있구.. 순서도 있고,


이렇답니다! 있다는 것만 알아두면 뒤에서 설명드립니다!


연산자 순서도 복잡한 수식 사용하시면 꼭필요합니다.




사칙연산은 쉽죠? 더하기 빼기 곱하기 나누기 .


여기에 %연산만 더해서 이건 나머지를 구하는거에요 5%3 은 결과값으로 2가나옵니다!


복합대입연산자는 a = a*15 이걸 a*=15 이렇게 줄여놓은거에요 a두번써야하니까 지저분해보이고 귀차나! 그래서 줄인듯 ㅋㅋ..


관계연산 <, >, <=, >=, ==, != 


악어입은 아시죠?    == 이건 양옆이 같으면 참, 다르면 거짓을 리턴합니다. != 는 ==으로 했을때 나오는 결과의 반대 .


양옆이 같으면 거짓, 다르면 참을 리턴해줍니다!


논리연산 &&, ||, !


&&는 양옆이 모두 true일때, ||는 둘중하나라도 true일때, !는 느낌표 뒤에오는 결과를 뒤집어줍니다. !true 면 false와 똑같은 뜻이죠.


부호 연산 +,-


그냥 앞에 부호붙여주는거에요 +는 수학에서 생략가능하죠? 생략가능하구요~ -는 뜻그대로 마이너스로 바꿔줘요.


int n = 10 이 있으면 -n 을 출력하면 -10이 나옵니다.


증감연산 ++,--


변수 앞에 붙으면 증가가 제일 우선입니다. System.out.println(++n); 이면 11을출력, System.out.println(n++); 이면 10을 출력하고 11이 됩니다.


비트연산 &, |, ^, ~


&는 AND연산, |는 OR연산, ^는 XOR연산, ~는 모든비트를 반전시킵니다.


비트 쉬프트 연산 <<, >>, >>>


<<, >> 는 뒤에오는 숫자만큼 화살표 방향으로 비트를 이동합니다. 빈공간은 0으로 채웁니다. 음수일때 >>는 1로 채웁니다.


>>>는 >>와 똑같지만 음수일때 1로채우는 그런기능은 없습니다.




여기서 거의 안쓰는건 비트쪽 연산인거같아요 깊게 안해봐서그런가... 안쓰게되더라구요ㅋㅋ


그래도 아는게 힘이니까 무슨뜻인지는 알고가는게 좋을거 같습니다!




이번 포스팅은 여기까지 할게요 힘들게 달려왔네요 다음포스팅에서 봅시다!!!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5 - 1. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

+ Recent posts