Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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 31
Archives
Today
Total
관리 메뉴

개발자

[JAVA 4일차]연산자(산술,증감,논리,비교,할당,삼항)/연산메소드/Scanner/try catch(예외)/Integer(변환)/NumberFormatExceptio 본문

개발자/JAVA

[JAVA 4일차]연산자(산술,증감,논리,비교,할당,삼항)/연산메소드/Scanner/try catch(예외)/Integer(변환)/NumberFormatExceptio

GoGo개발 2022. 8. 15. 15:58
산술연산자
종류 : +   =   *   /   %(나머지구함)   <<   >>   >>>


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
        x << n  은 x*(2의 n승)의 결과값과 같다. x는 실수형은 불가하고 정수형만 가능함.
        x >> n  은 x가 양수일 경우 x/(2의 n승)의 결과값과 같다. x는 실수형은 불가하고 정수형만 가능함. 
        x >>> n 은 정수 x를 32bit 형태의 2진수로 나타낸후 오른쪽으로 n번 이동시키고 빈자리는 0으로 채운다.
 
 
    System.out.println("==== 1. 산술연산자 + - * / %(나머지) <<    >>   >>>  ====");
    
    int n = 10;
    System.out.println("n+3 =" + (n+3)); // n+3 =13
    System.out.println("n-3 =" + (n-3)); // n-3 =7
    System.out.println("n*3 =" + (n*3)); // n*3 = 30
    System.out.println("n/3 =" + (n/3)); // n/3 =3   정수/정수=정수(몫)
    System.out.println("n/3 =" + (n%3)); // n%3 = 1  10을 3으로 나누었을때의 나머지
    
    System.out.println("n<<3 = " + (n<<3)); // n<< = 80
cs

 

증감 연산자

 

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
 
      //int a=7;
      //int b=3;
      // 또는 
      int a=7, b=3;
      System.out.println("a =>" + a); // a=> 7
      
      //a = a+1;
      //또는
      a++;
      System.out.println("a =>" + a); // a=> 8
      
      
      ++a; 
      System.out.println("a => " + a); // a=> 9
      
      
      System.out.println("b =>" + b); //  b=> 3
      
      //b = b-1;
      //또는
      b--;
      System.out.println("b =>" + b ); // b=> 2
      
      --b;
      System.out.println("b =>" + b ); // b=> 1  
cs

 

1. 후위 증감연산자 : (a++; b--;)는 다른 연산을 다 마친 이후에 1씩 증감한다.

 

1
2
3
4
5
6
 
      int z=++x; // ++x; x=x+1; x=11; z=x; z=11;
      System.out.println("z => " + z); // z => 11
      System.out.println("x => " + x); // x => 11
      
      
cs

 

2.전위 증감연산자  :(++a; --b;) 맨먼저 1씩 증감을 마친 이후에 다른 연산을 한다.

 

논리 부정 연산자(boolean)
 
1
2
3
4
5
6
System.out.println("\n==== 4. 논리 부정 연산자 ! ====");
      
      boolean bool = false;
      System.out.println("bool : " + bool); // bool : false
      System.out.println("!bool : " + !bool); // !bool : true
      
cs

 

논리 연산자
종류 : &   |   &&   || (두개짜리가 자주쓰인다)

 

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
31
32
33
34
35
 
      System.out.println("\n==== 6. 논리 연산자 & | && || ====");
    
            수학에서는  T ∧  T ∧  F ==> F   ^=and ∨=or(||)
            수학에서는  T ∧  T ∧  T ==> T
            수학에서는  F ∧  T ∧  T ==> F
            
            수학에서는  T ∨  T ∨  F ==> T 
            수학에서는  T ∨  T ∨  T ==> T 
            수학에서는  F ∨  F ∨  F ==> F 
            수학에서는  F ∨  F ∨  T ==> T 
      
    
    
      int c=50, d=60, e=70;
      
      bool = ( c > d ) && (d < e) && (c == 3);
          //  false    &&  스킵  <<암기>> 어차피 false니까 뒤에는 연산 안한다.
      System.out.println("bool => " + bool); // bool => false
     
      bool = ( c > d ) || (d < e) || (c == 3);
      //     false     ||  true   || skip 어차피 참이니까 뒤에 연산 안한다.  
      System.out.println("bool => " + bool); // bool => true
      
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      bool = ( c > d ) & (d < e) & (c == 3);
      //     false        &  true   &  false 한개짜리는 연산 스킵못한다
      System.out.println("bool => " + bool); // bool => false
 
      bool = ( c > d ) | (d < e) | (c == 3);
      //     false     |  true   |  false
      System.out.println("bool => " + bool); // bool => true
      
    
cs

 

<예시들>

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  System.out.println("\n~~~~~~~~ 퀴즈1 ~~~~~~~\n");
      
      int i=1;
      int j=i++// j=i; j=1; i++; i=2;
      
      
      if( (i > ++j) & (i++ == j) ) {
         //++j; j=2; i>j 2>2 
         //  false  & 끝까지연산 i==j 2==2 true i++ i=3         
          
          i= i+j; //false 니까 i= i+j 연산 안한다
      }
        System.out.println("i=" +i); // i=3
        
        i=1;
        j=i++// j=i; j=1; i=2;
        
        if( (i > ++j) && (i++ == j) ) {
      //   ++j; j=2; i>j 2>2
        //   false    && 이미 false 나와서 스킵한다
            i= i+j; // false니까 연산 안함
            
                    
        }
        System.out.println("i=" +i); // i=2
        
        
        System.out.println("\n~~~~~~~~ 퀴즈2 ~~~~~~~\n");
        
        int m1=0;
        int n1 = 1;
        
        if((m1++ == 0| (n1++ == 2)) {
        //  m1 == 0 true  m1++; m1=1; |  n1==2; 1==2; false n1++; n1=2;  
            
            m1 = 42//m1=42;
            
        }
        
        System.out.println("m1 => "+m1+ ", n1 =>" +n1);
        // m1 => 42 , n1 => 2
        
        m1=0;
      n1=1;
        if( (m1++ == 0|| (n1++ == 2)) {
        //   m1 == 0 0 == 0 true m1++; m1=1; || 이미 true 이기때문에 더이상 연산 안한다      
             m1=42// m1=42
        }
        System.out.println("m1 => "+m1+ ", n1 =>" +n1);
        // m1 => 42  , n1 => 1
      
        //###### 7. 비교 연산자 #######
      //       == 같다, !== 같지않다, > < >= <=
    
cs

 

비교연산자
종류 : == 같다, !== 같지않다, >  ,  <   ,  >= ,   <=

 

할당연산자(연산후 대입 연산자)
종류 :  +=     -=      *=      /=     %

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
     System.out.println("\n==== 8. 할당 연산자(연산후 대입 연산자) += -= *= /= %=  ====");  
      
      int no = 1;
      no += 3// no = no +3; 와 같은 것이다.
      System.out.println("no="+no); //no=4;
      
      no -= 2// no = no -2; 와 같은 것이다.
      System.out.println("no="+no); //no=2;
      
      no *= 5// no = no *5; 와 같은 것이다.
      System.out.println("no="+no); //no=10;
      
      no /= 4// no = no /4 ; 와 같은 것이다.
      System.out.println("no="+no); //no=2;
           
      no %= 3// no = no %3 ; 와 같은 것이다.
      System.out.println("no="+no); //no=2;
cs

 

삼항 연산자
변수선언 = (조건식)?값1:값2; 
     
변수를 선언하고 나서 값을 부여하고자 할 때 사용되어지는데
조건식이 참 이라면 변수에 값1 을 대입해주고, 
만약에 조건식이 거짓 이라면 변수에 값2를 대입해준다.

 

1
2
3
4
5
6
System.out.println("\n==== 9. 삼항연산자 ====");
      int num1=50, num2=60;
      int num3=(num1 > num2)?num1:num2; //참이면 num1 거짓이면 num2
              
      System.out.println("num3 => " + num3);
      //num3 = 60
cs

 

연산 메소드

 

1
2
3
4
5
// 2개의 정수를 입력받아  더하기를 해주는 메소드
    int plus(int num1, int num2) {
        return num1+num2;
    }
    
cs

 

minus, multiply(곱하기), divide(나누기) 도 가능하다.

 

scanner(스캐너) 

import 필요하다

1
2
3
4
5
6
Scanner sc = new Scanner(System.in);
 
    
System.out.print("문장을 입력하세요 => " );
String inputStr = sc.nextLine();
 
cs

 

System.in입력장치(키보드)를 말한다.
System.out은 출력장치(모니터)를 말한다.
Scanner sc 는 키보드에서 입력된 문자열을 읽어들이는 객체이다.
sc.nextLine();은 키보드로 부터 입력받은 문장을 읽어들이는 것인데 엔터(종결신호)까지 모두 읽어들인 후 스캐너 버퍼에 아무것도 남기지 않는다.

 

1.정수를 입력받는 경우

 

1
2
3
4
5
int inputNum_1 = sc.nextInt(); // 10 10공백 10엔터      sc.nextLine(); 
                                       // 10 30엔터
        
        //byte jumsu = sc.nextByte(); 바이트로 할거면 이렇게
 
cs
 
sc.nextInt(); 는 정수(int)를 읽어들이는 것인데 종결자가 공백 또는 엔터이다.
종결자(공백 또는 엔터) 앞까지 입력해준 정수를 읽어온다.
sc.nextInt(); 을 사용하면 스캐너(sc)버퍼에는 종결자(공백 또는 엔터)가 삭제되는 것이 아니라 그대로 남아 있게 된다.

sc.nextLine();  : 스캐너(sc)버퍼에 남아있는 것을 비우는 (제거하는) 효과를 가진다.

 

2.sc.next();

1
String inputWord_1 = sc.next(); // 안녕 하세요 호호호엔터
cs

 

>> 안녕 만 출력 된다.

 

 sc.next(); 는 단어를 읽어들이는 것인데 종결자가 공백 또는 엔터이다.

종결자(공백 또는 엔터) 앞까지의 입력해준 문자열을 읽어온다.
sc.next(); 을 사용하면 스캐너(sc)버퍼에는 종결자(공백 또는 엔터)가 삭제되는 것이 아니라 그대로 남아 있게 된다.

 

try catch (예외처리)

1.첫번째 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Scanner sc =new Scanner(System.in);
        System.out.println("정수를 입력하세요 => ");
        
        try {
            int inputNum = sc.nextInt(); // 123
            sc.nextLine();              // 안녕하세요
            
            System.out.println("입력한 정수 : " + inputNum);
     
    
        }catch(InputMismatchException e) { // 정수로 입력해야 하는데 문자를 입력한 경우 예외 발생
        //catch(java.util.InputMismatchException e) java.util 빼면 inputM~에 import해 해주어야한다.
        // 여기가 예외처리를 해주는 곳이다. catch 는 오류를 잡음. 원래 자바는 오류를 던져버림.
        //inputMis~는 클래스 e는 객체) 
        System.out.println("\n >>>정수만 입력하세요!! <<\n");
        e.printStackTrace(); 
        } // end of catch
        
        sc.close();
cs

 

try 문을 처리하면서 Exception 예외가 발생할 시 catch로 빠져서 그안의 실행문을 실행한다.

sc.close();는 scaaner를 닫아주는 것이다.

InputMismatchException :  정수로 입력해야 하는데 문자로 입력했을 때 예외발생

 

2.두번째 방법

 

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
31
32
33
34
35
36
37
Scanner sc = new Scanner(System.in);
          String inputStr = ""
          
        try {
      
            System.out.print("1. 첫번째 정수 입력 :");
            inputStr = sc.nextLine();
            
            int num1 = Integer.parseInt(inputStr); // 문자열 "10" 을 int 타입인 10으로 변경하기 (숫자형 문자열을 숫자로 변환)
                                                   // 문자열 "안녕"을 Int타입으로 변경하고자할때
            // Interger.parseInt는 String타입의 숫자를 int타입으로 변환해준다. 
            // 스테틱변수 인스턴스 필요없다. 
            // "10"
            
            System.out.print("2. 두번째 정수 입력 :");
            inputStr = sc.nextLine(); // "20"
                                        //"하세요"
        
            
            int num2 = Integer.parseInt(inputStr); // 문자열 "20"을 int 타입으로 바꿔준다
                                                   // 문자열" 하세요"를 int타입으로 변경하고자 할때
                                                   // 20
            
            System.out.println(num1 + "+" + num2 + "=" + (num1+num2));
            //10+20 = 30
         
        }   catch(NumberFormatException e) {
          
              System.out.println(">> "+inputStr +"(은)는 정수가 아니므로 정수만 입력하세요!!");
              e.printStackTrace(); // e.printStackTrace() : 에러 메세지의 발생 근원지를 찾아 단계별로 에러 출력
              
          //inputStr 지역변수라 try 벗어나면 못쓴다. 그니까 try밖에 다시 만들어준다.
    
        }
        
 
       sc.close();
cs

 

Interger.parseInt(객체); : 문자열을 int 타입으로 바꿔준다.

NumberFormatException : 문자를 숫자로 변경시도하다가 에러가 발생하는 경우

 

 

<지금까지 배운것 활용한 예제> 

위의 cal 메소드를 사용했다

 

 
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
31
32
33
34
35
36
37
38
39
40
41
try {
        
        System.out.print("1. 첫번째 정수를 입력하세요 : ");
        inputStr = sc.nextLine();
        
        int num1 = Integer.parseInt(inputStr);
        //String inputStr = sc.nextLine();
        
        System.out.print("2. 두번째 정수를 입력하세요 : ");
        inputStr = sc.nextLine();
        int num2 = Integer.parseInt(inputStr);
        
        Calculator calc = new Calculator(); // 동일 패키지라 임포트 X
        //스테틱 메소드 쓰려면 메소드 설계한 곳에서 static int plus ~ 해주고 인스턴스 선언 없애주고 (new 선언 없애주기) 
        //System.out.println(num1 + "+" +num2 + "=" + calculator.plus(num1, num2)); 해준다.
        
        System.out.println(num1 + "+" +num2 + "=" + calc.plus(num1, num2));
        
        // calc.plus(num1, num2); // 10+ 4 = 14
        
        System.out.println(num1 + "+" +num2 + "=" + calc.minus(num1, num2));
        // 10-4=6
        
        System.out.println(num1 + "*" +num2 + "=" + calc.multiply(num1, num2));
        // 10*4=40
        
        if(num2 != 0//0이 아니라면 //
        {
        System.out.println(num1 + "/" +num2 + "=" + calc.divide(num1, num2));
        // 10/4=2.5
        }
        else { //0이라면
            System.out.println(">>> 나누기 할때는 분모에 0 이 들어로 수 없습니다. <<<");
            
        }
        
        } catch(NumberFormatException e) {
            System.out.println(">>> " + inputStr + "안녕 은(는) 정수가 아니므로 정수만 입력하세요!! <<<");
        }
        
        sc.close();
cs

 

        Calculator calc = new Calculator(); 

스테틱 메소드 쓰려면 메소드 설계한 곳에서 static int plus ~ 해주고 인스턴스 선언 없애주고 (new 선언 없애주기)
 
정수,문자열 변환하기 Interger(Int,String)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 1. 문자열을 정수로 변환하기
        String str = "10";
        System.out.println(str+20); // 1020
        System.out.println(Integer.parseInt(str) + 20); // 30
        
        
2. 정수를 문자열로 변환하기 -첫번째 방법
        int no = 40;
        System.out.println(no+50); //90
        System.out.println(Integer.toString(no)+50);  //"40"+50 ==> "4050"
        
        
 2. 정수를 문자열로 변환하기 - 두번째 방법  더많이쓴다
        int num = 50;
        System.out.println(num+40); //90
        System.out.println(String.valueOf(num)+40); // "50" +40 ==> "5040"
 
cs