이번엔 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

변수 아시죠? 변하는수 ... 


java에선 변수명을 가지고 변수를 컨트롤합니다 (뭔가 당연한 소리같은 당연한소리) <-(?)




java머신 위에서 프로그램이 실행된다고 했자나여! 저저번 포스팅에서..


변수명을 설정하면 그 변수명이 가지고 있는 자료형에 맞춰서 메모리 공간에 할당이 됩니다!


여러분들 컴퓨터에 램 꽂혀있죠? 전 8기가 박혀있는데 


8기가 -> 8*1024*1024*1024 바이트 만큼 메모리공간이 있는겁니다.


비교하기 쉽게 그냥 적어봤어요!




소스 갑니다.


public class test {

public static void main(String[] args) {

int num;

}

}


여기서 제가 int형 변수를 생성했습니다.


int 는 몇바이트죠? 


네~4바이트~


4바이트가 할당된거에요 boolean, char, byte, short, long, double, float 등등 있습니다.


이넘들은 순서대로 1, 2, 1, 2, 4, 8, 8, 4 바이트를 할당하게 됩니다!!!


변수명으론 숫자로 시작하면 안되구, 키워드로 설정하시면 안됩니다. 키워드로 설정하는게 뭐냐..


변수이름을 int 로 해버리는거에요! 소스로 하면 int int 정수형 변수 int를 만든거죠 헷갈리죠?


그래서 아예 막아버렸어요! 키워드 = 이미 java 소스 자체에 등록되있는 이름들(int, double, if, break, while, try, import, implements 등등)


이정도로만 알면되구 다음으론,




소스


public class test {

public static void main(String[] args) {

double a, b;

a = 1.0000001;

b = 2.0000001;

System.out.println(a+b);

}

}


결과: 예상해보세요!


일반적으로 생각해봤을때는 3.0000002 가 나와야 하죠 근데 돌려보면


3.0000001999999997 요로콤 나와요..


1이상 5이하 정수의 수는?      5개죠?


1이상 5이하 실수의 갯수는?      ?????


무한개가 존재하죠... 이렇듯이 컴퓨터가 무한개의 실수를 다 표현할수는 없어요...


그래서 이 한계를 극복하고자 정밀도는 포기를 해버리고 표현의 범위를 넓힌거에요.




실수 표현을 위한 수식이 이렇게 됩니다.


플마(1.m)*(2의(e-127승))


그냥 표현할수 있는 범위가 어마어마하게 증가했음을 보여주는 겁니다!  사실 100프로 이해못했어요ㅋㅋㅋㅋㅋㅋㅋ 


실수는 완벽히 계산을 못한다~ 이렇게 알아두심됩니다!


죄송해요...




이정도면 이번 포스팅 끝내도 될거같아요 부족한거, 필요하신내용, 궁금한내용 있으시면 댓글로 적어주세요!


무한태클 받습니다!


다음포스팅에서 뵈요~




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03
JAVA 공부 시작할게요!  (0) 2018.04.03

제목이 너무 좁은 범위를 나타낸다고 생각을 하시겠지만 


제가 윤성우님의 '난 정말 java를 공부한적이 없다구요' 책을 보고 다시 공부중이거든요.


C, C++, 자료구조 등 같은 시리즈로 했거든요. 아주 공부잘되더라구요!




쓸데없는 소리 집어치우고 암튼 순서를 보니 system.out.println 이 있어서 하는거에요! 다음 포스팅부턴 좀더 넓은범위로 갈게요.




항상 했던대로 소스부터 때려넣을게요!!!


public class test {

public static void main(String[] args) {

System.out.println("hi");

}

}


소스보시면 public class test 부분의 test는 클래스 이름입니다. 한 소스파일안에 class는 여러개가 존재해도 되지만,


소스파일의 이름있죠? test.java 이렇다면 test라는 클래스는 꼭 존재해야합니다!


그안에는 main함수가 존재해야 하구요.


c,c++해보셨으면 main함수 아시죠? 프로그램에서 중심이 되는 함수입니다. java에선 메소드라고 하고 ,


이름은 main메소드 이렇게 불리는거 같아요.




다음 소스 넣을게요.


public class test {

public static void main(String[] args) {

System.out.println(10);

System.out.println("hello " + "world");

System.out.println(3+7);

System.out.println("hello" + 3+7);

                System.out.println("hello" + (3+7));

}

}


결과: 

10

hello world

10

hello37

hello10

첫번째 줄은 10은 그냥 10으로 출력해줍니다.

두번째는 글자를 따로 붙여쓰고 싶으면 '+' 연산자로 가능하구요.

세번째는 사칙연산이 가능하는걸 보여주고

네번째는 문자열뒤에 +를 붙이면 그냥 옆에 붙어버립니다. 그래서 3+7이 10이 아니고 37로 나오는거구

마지막줄은 3+7부분에 괄호를 쳐서 연산을 먼저하게 됩니다. 따라서 10이 출력되는거구요!



전 이런거 공부할때 간단한거라도 여러번 쳐보고 응용도 해봤어요. 이럴땐 되고 저럴땐 안되고 등등...

프로그래밍은 여러번 쳐보고 끄적끄적해보는게 최고더라구요.



어쨌건 마무리!  주석하나 알려드리고 끝낼게요! 아주간단하지만 언어가 바뀔때마다 헷갈리더라구요.ㅋㅋ

c랑 똑같아요!ㅋㅋㅋㅋ    

//  <- 한줄주석

/**/ <- 묶음 주석



깔끔하게~

다음포스팅에서 봅시다 !!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03
JAVA 공부 시작할게요!  (0) 2018.04.03

자바는 일반적인 프로그램들과는 달리


자바 가상머신 위에서 실행되는 프로그램이다!




따라서 windows 든 linux든 unix 든 어디든지 java머신만 설치해준다면,


내가만든 java프로그램은 문제없이 실행된다는 소리!




생각해보면 나는 c프로그램을 실행할때 linux, unix에선 gcc 쓰고 windows에선 그냥 비주얼스튜디오가 컴파일 해주고 ㅋㅋ


python은 java랑 비슷하게 실행하는거 같기도 하고..




...




좀더 생각해보니 간단히 말해 자바는 운영체제 위에 java머신이 있고 그 자바머신위에 내 소스파일이 실행된다는거고


나머지들(예외가 있겠지만)은 운영체제 위에서 쌩으로 소스가 실행되는거 같음.


물론 뇌피셜이 섞여 있으니 한눈으로 읽고 다른눈으로 뱉으세요.ㅋㅋ




이거면 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 공부 시작할게요!  (0) 2018.04.03

목표가 생겼어요!!


JAVA예전에 조금했던거 이어서 java기본 마무리해보고


게임한번 만들어보려구요.


무슨게임인지는 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

+ Recent posts