본문 바로가기

Java

Java_03

* 연산자 : 변수나 상수에 연산을 위해 사용

- 단항 연산자 : 피연산자가 하나인 연산자

- 이항 연산자 : 연산을 위해 두개의 항이 필요한 연산자

- C는 안되지만 double형과 float형에서는 %연산이 가능하다.

- 산술연산 : 최소가 int형이고 short에서는 안된다.

- 부호연산자 : 단항연산자이며 + - 같은 부호를 뜻한다.

- 증감연산자 : 변수의 값을 1증가 혹은 1감소 시킨 후 그 값을 다시 변수에 저장

증감연산자 예제)

  1. public class Test2{
  2.     public static void main(String[] args){
  3.         int a=10, b=0;
  4.  
  5.          b=a++; // → b=a; a=a+1 : 후위 증가 연산자
  6.         // b=++a; → a=a+1; b=a : 전위 증가 연산자
  7.        
  8.         // ++a; → 전위 증가 연산자
  9.         // a++; → 후위 증가 연산자
  10.  
  11.         //    11    12    13(14) 13
  12.         // b= ++a + ++a + a++ + ++a;
  13.         // 49.. C에서는 52(13*4)가 나온다..
  14.         // 언어에 따라 다르다. ++수식을 남용하지 말라.
  15.         // 일단 머리 아프니까. ∴b=몰라도 된다
  16.         // 단일로는 많이 쓴다.
  17.  
  18.         System.out.println("a:"+a);
  19.         System.out.println("b:"+b);  
  20.     }
  21. }

증감연산자 예제의 결과)
a:10
b:11

- 관계연산자 : true / false값 반환

- 동등연산자 : = 한번은 대입연산 / == 두번은 같다는 의미
관계연산자/동등연산자 예제)
  1. public class Test2{
  2.     public static void main(String[] args){
  3.  
  4.         int a=10, b=10, c=20;
  5.         System.out.printf("a:%d,b:%d,C:%d ",a,b,c);
  6.  
  7.         System.out.println("a>c:"+(a>c));
  8.         System.out.println("a<c:"+(a<c));
  9.         System.out.println("a==b:"+(a==b));
  10.         System.out.println("a!=b:"+(a!=b));
  11.         System.out.println("a>=b:"+(a>=b));
  12.         System.out.println("a==c:"+(a==c));
  13.     }
  14. }
관계연산자/동등연산자 예제의 결과)
a:10,b:10,C:20
a>c:false
a<c:true
a==b:true
a!=b:false
a>=b:true
a==c:false

- 논리연산자
  · && : 논리곱, 둘다 만족시 true, 하나만 만족하거나 둘다 만족하지 않을 시 false
  · || : 논리합, 둘중 하나라도 만족시 true, 둘다 만족하지 않을 시 false

- 논리부정연산
  · ! : 논리부정, NOT

- 조건 연산자 : 조건식이 true일 때 '값1'을 변수에 대입하고 false일 때 '값2'를 대입한다.
  · 변수 = 조건식? 값1 : 값2
  · 주로 삼항연산자라고 불리우며 자주쓰인다.
삼항연산자 예제1)
  1. import java.io.IOException;
  2.  
  3. public class Test3 {
  4.     public static void main(String[] args)throws
  5.     IOException{
  6.     // 문자를 입력 받아 대문자이면 소문자로 변환하고
  7.     // 그렇지 않으면 그대로 출력하는 프로그램
  8.  
  9.     char ch, conv;
  10.  
  11.     System.out.print("한문자?");
  12.     ch=(char)System.in.read();
  13.  
  14. //  conv=ch>='A'&&ch<='Z'? (char)(ch+32) : ch;
  15. // 대문자A:65, 소문자a:97 - 32차이
  16.  
  17.     // 대→소, 소→대, 기타 그냥 출력
  18.     conv=ch>='A'&&ch<='Z'? (char)(ch+32) :
  19.     (ch>='a'&&ch<='z'?(char)(ch-32):ch);
  20.  
  21.     System.out.printf("%c → %c ", ch, conv);
  22.     }
  23. }
삼항연산자 예제1의 결과)
한문자?a
a → A
한문자?A
A → a

삼항연산자 예제2)
  1. // 정수를 입력받아 짝수인지 홀수인지 판별
  2.  
  3. import java.io.IOException;
  4. import java.io.BufferedReader;
  5. import java.io.InputStreamReader;
  6.  
  7. public class Test4{
  8.     public static void main(String[] args)throws
  9.     IOException{
  10.         BufferedReader br=new BufferedReader(
  11.         new InputStreamReader(System.in));
  12.         int n;
  13.         String s; // 문자열
  14.  
  15.         System.out.print("정수? ");
  16.         n=Integer.parseInt(br.readLine());
  17.  
  18.         s=n%2==0? "짝수" : "홀수";
  19.  
  20.         System.out.printf("%d → %s ",n,s); //%s문자열
  21.     }
  22.  
  23.        
  24. }
삼항연산자 예제2의 결과)
정수? 11
11 → 홀수

삼항연산자 예제3)
  1. // 정수를 입력받아 짝수인지 홀수인지 판별
  2.  
  3. import java.io.IOException;
  4. import java.io.BufferedReader;
  5. import java.io.InputStreamReader;
  6.  
  7. public class Test4{
  8.     public static void main(String[] args)throws
  9.     IOException{
  10.         BufferedReader br=new BufferedReader(
  11.         new InputStreamReader(System.in));
  12.         int n;
  13.         String s; // 문자열
  14.  
  15.         System.out.print("정수? ");
  16.         n=Integer.parseInt(br.readLine());
  17.  
  18.         s=n%2==0? "짝수" : "홀수";
  19.  
  20.         System.out.printf("%d → %s ",n,s); //%s문자열
  21.     }
  22.  
  23.        
  24. }
삼항연산자 예제3의 결과)
년도? 2012
2012 년도 → 윤년

- 비트 단위 연산자
  · 비트 단위 : 2진수로 풀어서 연산해서 비트단위라는 말이 나옴
  · ~ : 해당 비트단위를 반전
  · 쉬운예로 a=12 일때 b=~a 라면 b=-13

- 비트 단위 논리연산자 : 정수형 자료의 내부 2진수 값을 대상으로 논리연산 수행 (이항연산자)
  · AND : &  마스크연산 이라고도 하며 각 항의 값이 0과 1일 때 곱셈의 결과가 1일때 참
             값을 없앨 때 사용한다 해서 마스크 라는 말이 붙었는지도..?
  · OR : |  각 항의 값이 0과 1일 때 덧셈의 결과가 1일 때 참
  · XOR : ^  각 항의 값이 0과 1일 때 서로 다른 값일 때 참
             기초연산 → a=13; 
                              a=a^27;  
                              a=a^27;
                              a=13;
XOR ^ 예제)
  1. /*
  2. 세 수를 입력받아 크기 순으로 나열하기(적은수-큰수 순)
  3. 첫번째수? 10
  4. 두번째수? 5
  5. 세번째수? 7
  6. 5 7 10
  7. */
  8.  
  9. import java.io.IOException;
  10. import java.io.BufferedReader;
  11. import java.io.InputStreamReader;
  12.  
  13. public class Test10{
  14.     public static void main(String[] args)throws
  15.     IOException{
  16.         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  17.  
  18.         int a,b,c,temp;
  19.  
  20.         System.out.print("첫번째수? ");
  21.         a=Integer.parseInt(br.readLine());
  22.         System.out.print("두번째수? ");
  23.         b=Integer.parseInt(br.readLine());
  24.         System.out.print("세번째수? ");
  25.         c=Integer.parseInt(br.readLine());
  26.  
  27.         if (a>b)
  28.         { temp=a;
  29.         a=b;
  30.         b=temp; // 빈컵에 a를 담고 a컵에 b를 담고 b컵에 빈컵에 들어있는 a값을 넣는다.
  31.         /*
  32.         a=a^b;
  33.         b=b^a;
  34.         a=a^b;
  35.         */   
  36.         }
  37.         if (a>c)
  38.         { temp=a;
  39.         a=c;
  40.         c=temp;
  41.         }
  42.         if (b>c)
  43.         { temp=b;
  44.         b=c;
  45.         c=temp;
  46.         }
  47.  
  48.         System.out.printf("%d %d %d ", a,b,c);
  49.     }
  50.  
  51. }
XOR ^ 예제의 결과)
첫번째수? 18
두번째수? 17
세번째수? 16
16 17 18

- shift 연산자 : 비트값을 알아낼 목적
  · a=32>>3 → 32÷23 나눗셈 응용, 이동으로 생긴 왼쪽 자리는 부호로 채움
  · a=32<<3 → 32×23 곱셈 응용, 이동으로 생긴 오른쪽 자리는 0으로 채움
  · >>> → 우측으로 이동하고 이동으로 생긴 왼쪽 자리는 0으로 채움

- 대입연산자 : = 의 우측의 값을 좌측에 대입한다는 의미로 쓰인다.
  · =, +=, -=, *=, /=, %= 등이 있다.

- 형변환 : 캐스팅
  · 묵시적 형변환 : a=3.14d + 3.14d
  · 명시적 형변환
    float a;
    int r;
    a = (float)r * r * 3.14f;





문제 1. (첨부파일 휠클릭하여 새탭으로)
1/2 + 2/3 + 3/4 ~ 9/10 의 합 출력


문제 2. (첨부파일 휠클릭하여 새탭으로)
어떤수를 입력받아 입력 받은 수까지의 정수합
원하는수? 20
20까지의합 : 210

문제 3. (첨부파일 휠클릭하여 새탭으로)
1~100 까지의 합을 구하되 수가 10의 배수가 될때마다 합출력
1~10 : 55
1~20 : 210
  :
1~100 : 5050

문제4. (첨부파일 휠클릭하여 새탭으로)
1+(1+2)+(1+2+3)+....+(1+2+3..+10) 의 합 출력

문제5. (첨부파일 휠클릭하여 새탭으로)
어떤수를 입력 받아 입력 받은 수까지의 3의 배수의 개수는?
어떤수? 10
3의배수의 개수 : 3

추가문제6. - 본문 예제
while문과 증감연산자를 이용한 반복문


추가문제7.
사람의 성향을 거의 정확하게 판단할 수 있는 프로그램
(문자열을 입력받아 출력)


문제8.
...
문제9.
...
문제10.
...

'Java' 카테고리의 다른 글

Java_06  (0) 2011.10.31
Java_05  (0) 2011.10.29
Java_04  (0) 2011.10.27
Java_02  (0) 2011.10.25
Java_01  (0) 2011.10.24