* 연산자 : 변수나 상수에 연산을 위해 사용
- 단항 연산자 : 피연산자가 하나인 연산자
- 이항 연산자 : 연산을 위해 두개의 항이 필요한 연산자
- C는 안되지만 double형과 float형에서는 %연산이 가능하다.
- 산술연산 : 최소가 int형이고 short에서는 안된다.
- 부호연산자 : 단항연산자이며 + - 같은 부호를 뜻한다.
- 증감연산자 : 변수의 값을 1증가 혹은 1감소 시킨 후 그 값을 다시 변수에 저장
증감연산자 예제)
-
public class Test2{
-
public static void main(String[] args){
-
int a=10, b=0;
-
-
b=a++; // → b=a; a=a+1 : 후위 증가 연산자
-
// b=++a; → a=a+1; b=a : 전위 증가 연산자
-
-
// ++a; → 전위 증가 연산자
-
// a++; → 후위 증가 연산자
-
-
// 11 12 13(14) 13
-
// b= ++a + ++a + a++ + ++a;
-
// 49.. C에서는 52(13*4)가 나온다..
-
// 언어에 따라 다르다. ++수식을 남용하지 말라.
-
// 일단 머리 아프니까. ∴b=몰라도 된다
-
// 단일로는 많이 쓴다.
-
-
System.out.println("a:"+a);
-
System.out.println("b:"+b);
-
}
-
}
증감연산자 예제의 결과)
a:10
b:11
- 동등연산자 : = 한번은 대입연산 / == 두번은 같다는 의미
관계연산자/동등연산자 예제)
-
public class Test2{
-
public static void main(String[] args){
-
-
int a=10, b=10, c=20;
-
System.out.printf("a:%d,b:%d,C:%d ",a,b,c);
-
-
System.out.println("a>c:"+(a>c));
-
System.out.println("a<c:"+(a<c));
-
System.out.println("a==b:"+(a==b));
-
System.out.println("a!=b:"+(a!=b));
-
System.out.println("a>=b:"+(a>=b));
-
System.out.println("a==c:"+(a==c));
-
}
-
}
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)
-
import java.io.IOException;
-
-
public class Test3 {
-
public static void main(String[] args)throws
-
IOException{
-
// 문자를 입력 받아 대문자이면 소문자로 변환하고
-
// 그렇지 않으면 그대로 출력하는 프로그램
-
-
char ch, conv;
-
-
System.out.print("한문자?");
-
ch=(char)System.in.read();
-
-
// conv=ch>='A'&&ch<='Z'? (char)(ch+32) : ch;
-
// 대문자A:65, 소문자a:97 - 32차이
-
-
// 대→소, 소→대, 기타 그냥 출력
-
conv=ch>='A'&&ch<='Z'? (char)(ch+32) :
-
(ch>='a'&&ch<='z'?(char)(ch-32):ch);
-
-
System.out.printf("%c → %c ", ch, conv);
-
}
-
}
한문자?a
a → A
한문자?A
A → a
삼항연산자 예제2)
-
// 정수를 입력받아 짝수인지 홀수인지 판별
-
-
import java.io.IOException;
-
import java.io.BufferedReader;
-
import java.io.InputStreamReader;
-
-
public class Test4{
-
public static void main(String[] args)throws
-
IOException{
-
BufferedReader br=new BufferedReader(
-
new InputStreamReader(System.in));
-
int n;
-
String s; // 문자열
-
-
System.out.print("정수? ");
-
n=Integer.parseInt(br.readLine());
-
-
s=n%2==0? "짝수" : "홀수";
-
-
System.out.printf("%d → %s ",n,s); //%s문자열
-
}
-
-
-
}
정수? 11
11 → 홀수
삼항연산자 예제3)
-
// 정수를 입력받아 짝수인지 홀수인지 판별
-
-
import java.io.IOException;
-
import java.io.BufferedReader;
-
import java.io.InputStreamReader;
-
-
public class Test4{
-
public static void main(String[] args)throws
-
IOException{
-
BufferedReader br=new BufferedReader(
-
new InputStreamReader(System.in));
-
int n;
-
String s; // 문자열
-
-
System.out.print("정수? ");
-
n=Integer.parseInt(br.readLine());
-
-
s=n%2==0? "짝수" : "홀수";
-
-
System.out.printf("%d → %s ",n,s); //%s문자열
-
}
-
-
-
}
년도? 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 ^ 예제)
-
/*
-
세 수를 입력받아 크기 순으로 나열하기(적은수-큰수 순)
-
첫번째수? 10
-
두번째수? 5
-
세번째수? 7
-
5 7 10
-
*/
-
-
import java.io.IOException;
-
import java.io.BufferedReader;
-
import java.io.InputStreamReader;
-
-
public class Test10{
-
public static void main(String[] args)throws
-
IOException{
-
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
-
-
int a,b,c,temp;
-
-
System.out.print("첫번째수? ");
-
a=Integer.parseInt(br.readLine());
-
System.out.print("두번째수? ");
-
b=Integer.parseInt(br.readLine());
-
System.out.print("세번째수? ");
-
c=Integer.parseInt(br.readLine());
-
-
if (a>b)
-
{ temp=a;
-
a=b;
-
b=temp; // 빈컵에 a를 담고 a컵에 b를 담고 b컵에 빈컵에 들어있는 a값을 넣는다.
-
/*
-
a=a^b;
-
b=b^a;
-
a=a^b;
-
*/
-
}
-
if (a>c)
-
{ temp=a;
-
a=c;
-
c=temp;
-
}
-
if (b>c)
-
{ temp=b;
-
b=c;
-
c=temp;
-
}
-
-
System.out.printf("%d %d %d ", a,b,c);
-
}
-
-
}
첫번째수? 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.
...