티스토리 뷰

1.     단항 연산자란?

-      피연산자가 1개인 연산자이다.

-      (1) 부호 연산자 : + , - [ 논리타입인 booleanchar타입은 사용이 불가능하다. ]

-      * 부호연산자의 산출타입은 int이다.

-      (2) 증감 연산자 : ++ , -- [ 전위와 후위가 구분되게 된다. ]

-      * 연산식에서 사용될 때, 후위연산자는 연산이 모두 끝난 후에 1증감을 시킨다.

-      (3) 논리부정 연산자 : ! [ Boolean 타입에만 사용이 가능하다. ]

-      * !피연산자 식으로 사용이 되며, 피연산자가 truefalsefalsetrue로 바꾸게 해준다.

 

2.     이항 연산자란?

-      (1) 산술 연산자 : + , - , * , / , %

-      (2) 문자열 연산자 : + [ 연산자 중 1개의 연산자가 String 타입일 경우 다른 연산자도 String으로 변환한다. ]

-      피연산자 중 문자열이 있으면 결과가 문자열타입으로 산출이 된다.

-      (3) 대입 연산자 : = , += , -= , *= , /= , %= , &= , ^= , = , <<= , >>=

-      * += : 두개의 항을 더한 다음에 대입하라

-      (4) 비교 연산자 : < , <= , > , >= , == , !=

-      * !=같지 않다.’라는 의미이다.

-      * 대소 또는 동등을 비교해 Boolean 타입인 true/false을 산출한다.

-      * 동등비교 연산자는 모든 타입에 사용된다.

-      * 비교 연산자는 Boolean 타입을 제외한 모든 기본 타입에 사용된다.

-      * 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용된다. ( 실행흐름 제어에 사용된다. )

-      (5) 논리 연산자 : &&(논리곱) , ll(논리합) , & , l , ^(배타적 논리합) , !(논리부정)

-      * &&&의 의미는 그리고(AND)’라는 의미이다. &의 두개의 피연산자는 truefalse를 나타나는 boolean타입이 오게 된다.

-      * l ll또는(OR)’이라는 의미이다.

-      * 피연산자는 Boolean 타입만 사용이 가능하다.

-      * AND는 피연산자가 모두 true일때만 연산결과가 true로 산출된다.

-      * OR는 피연산자 중 하나만 true이면 연산결과가 true로 산출된다.

 

3.     IP주소와 Port번호

-      프로그램의 실행흐름을 제어(control)를 하는 실행문장이다.

-      공유 폴더에 접근하는 방법 : Target pcip주소를 알아야 한다.

-      인터넷에 연결된 모든 pc는 자신의 IP주소를 가지게 된다.

-      IP주소 è 비유하면 ㅇㅇㅇㅇ아파트의 몇 동이라고 할 수 있다.

-      ㅇㅇ호를 알 수 있는 것은 Port번호를 통해 알 수 있다.

-      -> IPPort번호를 모두 알아야, PC가 서로 간의 접속이 가능해진다

-      -> IP 주소 ( 00아파트 000) : 운영체제까지는 도달(접속) 가능

-      -> Port 번호 ( 0000) : 운영체제 위에서 구동되는 특정 프로그램까지 도달이 가능하다!

-      IP주소를 알아보는 방법 : 파워쉘에 Ipconfig를 치면 IPv4에 나온다.

 

4.     코드 실행 흐름 제어

-      정상적인 코드 실행 흐름 : main 메소드의 시작인 중괄호인 { 에서 끝 중괄호인 }까지 위에서 아래의 방향으로 실행된다.

-      제어문은 코드 실행 흐름을 개발자가 원하는 방향으로 변경할 수 있게 해준다.

-      반복되면서 실행하는 것을 루핑이라고 한다.

 

5.     제어문

-      제어문은 중첩이 가능하다. ( 제어문의 중괄호’{}’ 내부에 다른 제어문 작성이 가능 )

-      Depth3이상이면 코드에 오류가 있을 수 있으니, 확인해봐야 한다.

 

6.     조건식

-      True 또는 false 값을 산출할 수 있는 연산식

-      Boolean 변수

-      조선식이 true이면 블록을 실행하고 false이면 블록을 실행하지 않는다.

-      실행문이 1개 이하면 중괄호{}를 생략할 수는 있지만 코드의 구분이 어려우니 생략하지 않는 것이 좋다.

-      If-else 구문 : 조건식 결과에 따라 실행 블록 선택

-      ---à 조건이 참(true)일 때는 if블록을 실행하고, 거짓(false)일때는 else블록을 실행한다.

-      IF – else if – else 구문 : 복수의 조건식을 두어 조건식을 만족하는 블록만 실행

-      당연히 기대했던 조건과 실행흐름을 Happy path(정상흐름)라고 부른다.

-      예상하지 못했던 조건과 실행흐름을 Alternative path(대체흐름)라고 부른다.

 


01. 문자열 연결 연산자

 

public class Sample30 {

     

      public static void main (String[] args) {

           

            // 문자열 연결 연산자(string concatenation) : +

           

            String str1 = "JDK" + 6.0;

            String str2 = str1 + "특징";

           

            System.out.println(str1); // -----> 'JDK6.0'으로 출력이 된다.

            System.out.println(str2); // -----> 'JDK6.0특징'이라고 산출된다.

            // Why : str1 보면 1개가 문자열("JDK") 이루어져있는 것을 있는데, 그때에는 + 문자열 연결 연산자로 바뀌게 되면서

            // 6.0 String(문자열) 타입으로 자동형 변환되게 된다. 그래서 6.0 더하는 것이 아니라 두개의 문자열을 연결하여 출력되게 것이다.

            // 문자열은 ""으로 표현해야 한다.

           

            // 표현식(expression ==> 연산식) 아무리 많은 연산자와 피연산자로 구성되어 있더라도,

            // 실행결과는 1개의 (= 스킬라) 생성

            // 표현식의 구성이 아무리 복잡해도, 한개의 항이라도 문자열이 있으면, 실행결과는 문자열!

            String str3 = "JDK" + 3 + 3.0;

            String str4 = 3 + 3.0 + "JDK";

 

            System.out.println(str3); // -----> 'JDK33.0'으로 출력된다.

            System.out.println(str4); // -----> '6.0JDK' 출력이 된다.

            // Why : 대부분 연산식(표현식) 왼쪽에서 오른쪽으로 진행되게 되는데, str3 경우 연산부터가 String으로 자동변환하게 되면서 3개가 문자열로 연결되는 반면,

            // str4의 경우 1번째와 2번째가 먼저 실수타입으로 연산되게 된 후에, String 타입으로 변환되기에 결과에 그렇게 나왔다.

           

      } // main

 

} // end class

 

02. 동등비교 연산자

 

public class Sample31 {

     

      public static void main (String[] args) {

           

            int num1 = 10;

            int num2 = 10;

           

            boolean result1 = ( num1 == num2 ); // (동등비교 연산자) num1 num2 같냐는 의미이다.

            boolean result2 = ( num1 != num2 ); // (동등비교 연산자) num1 num2 같지 않냐는 의미이다.

            boolean result3 = ( num1 <= num2 ); // num1 num2 이하냐는 의미이다. [ 왼쪽을 기준으로 생각해야 한다. ]

            // '()' 사용하여 연산의 우선순위를 정해줄 있다. () 연산부터 먼저 실행하게 된다.

            // boolean 경우 true false 논리타입의 결과값이 나오게 된다.

            // '()'사용해야 대입연산자인 = 과 구분할 수 있기에 잘 사용해야 한다.

           

            System.out.println("result1 : " + result1); // ---> result1 : true 출력된다.

            System.out.println("result2 : " + result2); // ---> result2 : false 출력된다.

            System.out.println("result3 : " + result3); // ---> result3 : true 출력된다.

           

      } // main

 

} // end class

 

03. IF문의 활용 - ' & (AND) ' 과 ' | (OR) '

 

public class Sample32 {

     

      public static void main (String [] args) {

           

            int charcode = 'A'; // 65 정수타입으로 대입

           

            if((charcode>=65) & (charcode<=90)) {

                 

                  System.out.println("대문자이군요!"); // 참이면 대문자이군요를 출력해라.

                 

            } // if1 - 대문자인지 파악하는 if구문

            // AND와 OR을 이용하여 어떻게 범위를 설정해야 하는지 잘 구분해야 한다.(**)

           

            if((charcode>=97) & (charcode<=122)) {

                 

                  System.out.println("소문자이군요!"); // 참이라면 소문자를 출력해라.

                 

                  // AND(&) 두개의 조건 모두 true이어야 연산결과가 true 나온다.

                  //'()' 사용해야 한다!!!

                  // && 조건 하나가 false 경우에는 2번째 조건은 보지도 않는 쇼트버전이고

                  // &는 첫번째가 false가 나올지라도 2번째 조건도 살펴보는 것이다.(*)

                  // 실무에서는 속도측면에서는 && 유리하지만, 가독성과 버그를 줄이기 위해서 & 많이 사용한다. (****)

                 

            } // if2 - 소문자인지 파악하는 if구문

           

            if (!(charcode<48) && !(charcode>57)) {

                 

                  // 단항연산자(!) 이항연산자보다 먼저 연산되어 버리기에 꼭 ()를 사용해야 한다.

                  // !() !() 계산한 후에 &&(AND) 연산한다.

                 

                  System.out.println("0-9 사이의 숫자이군요!");

                 

                  // ? 근데 우리는 charcode 'A' 키코드값인 65 저장하였는데 어떻게 0-9 사이의 숫자임을 있을가?

                  // ---> 0-9 해당되는 숫자 또한 키코드값이 따로 지정되어 있다.

                  // 48 숫자 0 해당되는 코드값이고 57 9 해당되는 코드값이다.

                 

            } // if3 - 0에서 9 사이의 숫자인지 파악하는 if구문

           

            int value = 6;

           

            if((value % 2 == 0) | (value % 3 == 0)) {

                 

                  // |는 원화표시 (\)를 시프트하면 나온다. (***)

                  // |는 또는(OR)이라는 의미를 가지고 있다.

                  // ||보다 | 많이 사용해라

                 

                  System.out.println("2 또는 3 배수 이군요!");

                 

            } // if4 - int value 2또는 3 배수인지 확인하는 if구문

           

            if((value%2 == 0 ) || (value%3 == 0 )) {

                 

                  System.out.println("2 또는 3 배수 이군요!!");

                 

            } //if5

           

           

      } // main

 

} // end class

 

04. IF문의 활용2

 

public class Sample33 {

     

      public static void main(String[] args) {

           

            int value = 100;

            // 문제 : value 숫자는 50보다 크고 90보다 작은가?

           

            if ((value > 50) & (value <90)) {

                 

                  System.out.println("50보다 크고 90보다 작다!(!)");

                 

            } else {System.out.println("50보다 크지 않고 90보다 작지 않다.(거짓!)");}

           

            // ================================================================== 아니면 //

           

            if (!((value>50) & (value < 90))) {

                 

                  System.out.println("거짓입니다!");

            }

           

      } // main

 

} // end class

 

05. IF문의 활용3 - ' % (나머지) '

 

public class Sample34 {

     

      public static void main (String[] args) {

           

            // 문제 : value 변수값이 소수인지 판단하라!

            // 1 자신의 숫자로만 나누어서 판단하라!

           

            int value = 100;

           

            if((value%value == 0 ) & (value%1 == 0)) {

                  System.out.println("소수입니다!");

            } // if

           

      } // main

     

} // end class

 

06. 대입 연산자

 

public class Sample35 {

     

      public static void main (String[] args) {

           

            int result = 0;

           

            result += 10;

            // ----> result = result + 10;

            System.out.println("1.result:"+result); // 1. result : 10 출력

           

            result -= 5;

            // -----> result = result 5;

            System.out.println("2.result:"+result); // 2. result :5 출력

           

            result *= 3;

            // ------> result = result*3;

            System.out.println("3.result:"+result); // 3. result : 15 출력

           

            result /= 5;

            // -----> result = result/5;

            System.out.println("4.result:"+result); // 4. result : 3 출력

           

            result %= 3;

            // -----> result = result&3;

            System.out.println("5.result:"+result); // 5. result : 0 출력

           

            // 대입 연산자는 가장 마지막에 이루어진다.

           

      } // main

 

} // end class

 

07. 복합대입 연산자

 

public class Sample36 { // 복합대입연산자로 변환시키기!

     

      public static void main (String[] args) {

            // 문제 : 복합대입연산자로, result 변수 값을 1증가시키는 코드를 만들어라!

            int result = 100;

            // result = result + 1;

            result +=1;

            System.out.println("result:"+result);

      } // main

 

} // end class

 

08. IF문 활용4 -1

 

public class sample37 {

     

      public static void main(String[] atgs) {

           

            int score = 93;

           

            if(score >= 90) {

                 

                  System.out.println("점수가 90점보다 큽니다!");

                  System.out.println("등급은 A입니다!!");

                  // 경우에는 실행문이 2개이기에 {} 생략이 불가능 하다.

                  // 실행문이 1개의 경우 생략은 가능하지만 if구분이 어려우니 생략하지 않는 것이 좋다.

                  // 실행문이 전혀 없을 때는 {} 생략하고 ; 붙여서 완성시킬 있다.

                  // ;; pass 의미이다. 아직 완성하지 못했거나 고민중이라는 의미이다.

                  // 아직 완성시키지 못했다면 차라리 {} 생략하기 보다는 { ;; }으로 작성하는 것이 좋다.

                 

            } // if1

           

            if(score < 90) {

                 

                  System.out.println("점수가 90점보다 작습니다!");

                  System.out.println("등급은 B입니다!!");

                 

            } // if2

           

      } // main

 

} // end class

 

09. IF문 활용4 - 2

 

public class Sample38 {

     

      public static void main(String[] args) {

           

            int score = 85;

           

            // if - else 예제

           

            if(score >= 90) { // 조건식이 true 이면...

                  System.out.println("점수가 90보다 큽니다!");

                  System.out.println("등급은 A입니다!");

            } else { // 조건식이 false 이면...

                  System.out.println("점수가 90보다 작습니다!");

                  System.out.println("등급은 B입니다!");

            } // if - else

           

      } // main

 

} // end class

 

10. IF문 활용4 - 3

 

public class Sample39 {

     

      public static void main (String[] args) {

           

            int score = 75;

           

            if(score >= 90) { // 90 이상인 것들만 true 걸러진다.

                  System.out.println("점수가 100-90 사이입니다.");

                  System.out.println("등급은 A입니다.");

            } else if(score >= 80){ // 나머지 80 이상인 것들만 true 걸러진다.

                  System.out.println("점수가 80-89 사이입니다.");

                  System.out.println("등급은 B입니다.");

            } else if(score >= 70) { // 나머지 70 이상인 것들만 true 걸러진다.

                  System.out.println("점수가 70-79 사이입니다.");

                  System.out.println("등급은 C입니다.");

            } else { // 마지막으로 남은것들을 실행시켜준다.

                  System.out.println("점수가 70 미만입니다.");

                  System.out.println("등급은 D입니다.");

                 

                  // 범위형성을 이렇게 자연스럽게 결정할 있게하여, 간단하게 구성해야 한다.

                 

            } // if - else if - else

           

      } // main

 

} // end class

 

11. 무작위 난수 생성기

 

public class Sample40 { // 무작위 난수 생성하기 (****************)

     

      public static void main (String[] args) {

           

            // 주사위 놀이 : 무작위로 1~6까지의 주사위 눈의 숫자를 생성하여 조건문으로 판단. (*****)

           

            int num1 = (int)(Math.random()*6)+1; // (*****)

            // --> 무작위 난수 생성 : 1(offset), 6(length) 정수 추출

           

            // 난수(random number) : 무작위

            // Math.random() : 0.0이상 1.0미만의 수를 생성한다.

            // 0.0 <= Math.random() < 1.0

            // 위의 범위를 이렇게 [0.0, 1.0) 표현하기도 한다.

            // =====> 이러한 범위를 Half-Open이라고 부른다.

           

            // (0.0)*6 <= Math.random()*6 < (1.0)*6

            //  0.0 <=  Math.random()*6 < 6.0

            // 5.99999 같이 실수가 나올 있으므로 강제형변환이 필요하다.

            // (int)0.0 <=  (int) (Math.random()*6) < (int)6.0

            // (int)0 <= (int) (Math.random()*6) < (int)6

            // (int)0+1 <= (int) (Math.random()*6)+1 < (int)6+1

            // (int) 1 <= (int) (Math.random()*6)+1 < (int) 7

            // (int) (Math.random()*6)+1에서 6 length이고 1 offset 의미한다.

            // 여기서 offset은 처음시작 값이고, length는 offset에서 가져오는 수의 갯수이다.

           

           

            //로또번호 : 1(from) ~ 45(to)를 나올 수 있게 할 수 있을까? (*****)

            int from = 1;

            int to = 45;

            int num = (int)(Math.random()*(to-from+1))+from;

            // 이렇게 하면 length와 offset을 자동으로 나오게 할 수 있다!(***)

            // * 뒤에는 length, 맨 끝의 +뒤에는 offset이라고 생각하면 편할것 같다.

            System.out.println(num + "번이 나왔습니다!");

           

            if(num1 ==1) {

                  System.out.println("1번이 나왔습니다.");

            } else if(num1 == 2) {

                  System.out.println("2번이 나왔습니다.");

            } else if(num1 == 3) {

                  System.out.println("3번이 나왔습니다.");

            } else if(num1 == 4) {

                  System.out.println("4번이 나왔습니다.");

            } else if (num1 == 5) {

                  System.out.println("5번이 나왔습니다.");

            } else if (num1 == 6) {

                  System.out.println("6번이 나왔습니다.");

            } // if - else if - else

           

            // else 대신 else if 활용해도 괜찮다.

           

      } // main

 

} // end class

 

12. 무작위 난수 생성기 2

 

public class Sample41 {

     

      public static void main(String[] args) {

           

            // 81-100 사이의 숫자

           

            int to = 100;

            int from = 81;

            int score = (int)(Math.random()*(to-from+1)) + from; // 꼭 외워야 한다!!(*****)

            System.out.println("점수는 " + score);

           

            String grade;

           

            if(score>=90) {

                  if(score>=95) {

                        grade = "A+";

                        } else {

                              grade = "A"; }

                  } else {

                        if(score >= 85) {

                              grade = "B+";

                              } else {

                                    grade = "B";

                                    }

            } // if - else 안에 if-else 중첩되어 있음을 있다.

            // else 한번만 사용할 있다.

            // if 필수로 작성해야 하고 else 필수가 아니다.

            // 조건문은 중첩사용이 가능하다.

           

            System.out.println("학점 : " + grade);

           

      } // main

 

} // end class

 

13. 무작위 난수 응용 - 과제 (My.ver)

 

public class Sample42 {

     

      public static void main(String[] args) { // 01. 과제 - 내가 코딩한 버젼

           

            // 문제 : 로또 범위 내에서, 무작위 정수를 6개를 추출하고,

            // 추출된 6 번호가 아래 번호들과 일치해서, 1등인지 아닌지 판단하여

            // 1등이면 1, 아니면 꽝이라고 출력하시오!

            // 1 당첨번호 : 12 , 3 , 7 , 17 , 23 , 44

            // 1) 과연 변수는 몇개가 필요하고 타입은 무엇으로 할까?

            // 2) 추출된 6개의 번호를 어떻게 1 번호와 비교할까?

            // 만일 이전에 추출된 무작위 정수가 다시 나올 수도 있다.

            // 이를, "복원추출"이라고 한다. 원래 로또는 같은 숫자가 2 이상 나올 없다.

            // 이를 "비복원 추출"이라고 한다. 그럼 어떻게 해결해야 될까?

           

            int to = 45;

            int from = 1;

            int num1 = (int)(Math.random()*((to-from)+1)) + from;

            int num2 = (int)(Math.random()*((to-from)+1)) + from;

           

            if (num1 == num2) {

                  num2 = (int)(Math.random()*((to-from)+1)) + from; // if - num2 복원추출 해결

            }

           

            int num3 = (int)(Math.random()*((to-from)+1)) + from; // num1 num2 같지 않은 상태에서 3 구한다.

           

            if ( (num3 == num1) | (num3 == num2) ) {

                  num3 = (int)(Math.random()*((to-from)+1)) + from; // if - num3 복원추출 해결

            }

           

            int num4 = (int)(Math.random()*((to-from)+1))+ from; // 상태에서 num4 구한다.

           

            if ((num4 == num3) | (num4 == num2) | (num4 == num1)) {

                  num4 = (int)(Math.random()*((to-from)+1)) + from;

            } // if - num4 복원추출 해결

           

            int num5 = (int)(Math.random()*((to - from)+1)) + from; // 상태에서 num5 구한다.

           

            if ((num5 == num4) | (num5 == num3) | (num5 == num2) | (num5 ==num1)) {

                  num5 = (int)(Math.random()*((to-from)+1)) + from;

            } // if - num5 복원추출 해결

           

            int num6 = (int)(Math.random()*((to-from)+1)) + from; // 상태에서 num6 구한다.

           

            if ((num6 == num5) | (num6 == num4) | (num6 == num3) | (num6 == num2) | (num6 == num1)) {

                  num6 = (int)(Math.random()*((to-from)+1)) +from;

            } // if - num6 복원추출 해결

           

           

            // ===> 복원 추출 모두 헤결!

           

            System.out.println("나의 번호는 " + num1 + ", " + num2 + ", " + num3 + ", " + num4 + ", " + num5 + ", " + num6);

           

            // 나의 번호 확인해보기 -> 이제 1등인지 아닌지 확인해 보는 작업으로 넘어가 보자

            //로또 1 번호는 12 , 3 , 7 , 17 , 23 , 44.

           

            if(( (num1 == 12) | (num1 == 3) | (num1 == 7) | (num1 == 17) | (num1 == 23) | (num1 ==44) ) &

                  ( (num2 == 12) | (num2 == 3) | (num2 == 7) | (num2 == 17) | (num2 == 23) | (num2 ==44) ) &

                  ( (num3 == 12) | (num3 == 3) | (num3 == 7) | (num3 == 17) | (num3 == 23) | (num3 ==44) ) &

                  ( (num4 == 12) | (num4 == 3) | (num4 == 7) | (num4 == 17) | (num4 == 23) | (num4 ==44) ) &

                  ( (num5 == 12) | (num5 == 3) | (num5 == 7) | (num5 == 17) | (num5 == 23) | (num5 ==44) ) &

                  ( (num6 == 12) | (num6 == 3) | (num6 == 7) | (num6 == 17) | (num6 == 23) | (num6 ==44) )

                        ){

                  System.out.println("축하합니다!! 1등입니다!");

            } else {

                  System.out.println("꽝입니다ㅠㅠ");

            } // if-else구문으로

           

           

      } // main

 

} // end class

 

 

728x90

'KH 정보교육원 [ Java ]' 카테고리의 다른 글

KH 07일차 - 참조타입  (0) 2022.03.04
KH 06일차 - 조건문과 반복문  (0) 2022.03.03
KH 04일차 - 타입변환 및 연산  (0) 2022.02.28
KH 03일차 - 변수  (0) 2022.02.25
KH 01 - 02 일차  (0) 2022.02.24
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항