메뉴 건너뛰기

창조도시 기록보관소

언어 연산자 종류 / 연산자 및 제어구조

2006.09.07 02:10

연지 조회 수:508 추천:3

◆ 연산자 및 제어구조◆


 


 



***제어구문


-  로직을 처리하기 위한 방법으로 프로그램의 흐름을 제어하는 문장, 제어구문의 종류


 


 


반복적인 구문..........> while, do-while, for
for문
for(초기화;조건식;증감식}
반복 하고자 하는 문장들;
}
While문
while(조건식);
반복 하고자 하는 문장들;
}
Do~while문
do{
반복 하고자 하는 문장들;
}while(조건식)
조건에 의한 분기.........> if-else, switch-case
예외처리구문.........> try-catch-finally, throw
분기처리.........>break, continue, label:, return


 


 



연산자
java도 다른 언어와 동일한 연산자를 갖고 있음.
연산자라는 것은 쉽게 이야기하자면, 우리가 산수시간에 배운
더하기, 빼기, 곱하기, 나누기등과 비슷한 것
다음을 계산할 경우, 계산 순서는 2 Ⅹ 3 + 5 / 3 1번 2 Ⅹ 3
2번 5 / 3
3번 Ⅹ한 값 + / 값


 


 


 


 


 


                                                                                                                                                


 


◆연산자의 종류◆


 


 


1. 단항 연산자 - 변수의 값을 하나 증가시키거나 하나 감소시키는 작업으로 언어에서는 제일 자주 발생


 


 


int(integer)
++ 피연산자(operand)의 값을 1 증가 시킴
-- 피연산자(operand)의 값을 1 감소 시킴 class testEx1 {
public static void main(String args[]) {
int i=5;
i++;
System.out.println(i);
i=5;
++i;
System.out.printin(i);
}
}
cmd.exe/창에 보이는 값 6
6 ........................
class testEx{
public static void main(String args[]) { int i=5;
i++; // i=i+1과 같은 의미
System.out.println(i);
i=5;
System.out.println(i);
}
}
..................................................
예제 //intro : testEx51.java
class testEx51{
public static void main(String args[]) { int i=0;
++i;
System.out.println(" ++i ==> "+i); --i;
System.out.println(" --i ==> "+i); i=0; i=i+1;
System.out.println(" i=i+1 ==> "+i); i=i-1;
System.out.println(" i=i-1 ==> "+i);
}
} cmd 결과 ++i ==> 1
--i ==> 0
i=i+1 ==> 1
i=i-1 ==> 0

2. 이항 연산자(부호 연산자) - 피연산자의 부호를 변경하는데 사용,
boolean형/char(1byte)
형을 제외한 나머지 기본형에 사용


 


+ 피연산자에 양수 1을 곱한 결과를 얻음.
- 피연산자에 음수 1을 곱한 결과를 얻음 class testEx1 {
public static void main(String [] args)
{ int i=-10;
i=+i; //+(-10);

System.out.printin(i); //-10
i=-10;
i=-i; //-(-10)
System.out.printin(i); //+10 }
}

cmd.exe/창에 보이는 결과 값 -10
10

3. 삼항 연산자 - 자바에서 소스의 길이를 줄이기 위해 많이 사용하는 방법,
조건식을 먼저 내놓은 상태에서 참, 거짓의 실행 여부를 적어 놓습니다


 


 


 


 result=((value % 2)==0)? "짝수","홀수";
예제
class testEx1
{
public static void main(String[] args)
{ int value=Integer.parseint(atgs[10]);
String result=((value % 2)==0)? "짝수" : "홀수";
system.out.printin("입력 받은 수는 " +value + "이며," +result + "입니다.");
}
}
실행방법
D:java>javac testEx1.java
D:java>javac test0Ex.java cmd.exe/창에 보이는 결과값 입력 받은 수는 10이며, 짝수입니다.


4. 관계 연산자 - 두 개의 오퍼랜드 값을 비교하는 방식을 취하고 있고, 모두 true와 false를 줌


 


 


> op1>op2 op1이 op2 크다.
>= op1>=op2 op1이 op2 크거나 같다.
< op1<= op1<=op2 op1이 op2 작거나 같다.
== op1==op2 op1이 op2 같다
i= op1i=op2 op1이 op2 같지 않다.
instanceof op1 instanceof op2 op1이 op2의 인스턴스(객체)이다.
class->자동차, 냉장고 등에 비유할 수 있음.
객체 -> 자동차, 냉장고에 속해 있는 핸들, 냉동칸 등에 비유할 수 있음. 두개의 오퍼랜드 값이 크다, 또는 작다, 같다, 다르다등을 비교하는 방식을 취하고 있으며,
이와 같은 관계 연산자는 모두 True와 fa;se를 던져 줌.
예제
class testEx1
{
public static void main(String [] args) {

int a,b;
boolean result;
a=integer.parselnt(args[10]);
b=integer.parselnt(args[10]); result=a>b;
system.out.[promtom(a+">"+b+" --> "+result);

result=a>=b;
system.out.[promtom(a+">"+b+" --> "+result); result=a system.out.[promtom(a+">"+b+" --> "+result); result=a<=b;
system.out.[promtom(a+">"+b+" --> "+result);
result=a==b;
system.out.[promtom(a+">"+b+" --> "+result);
result=ai=b;
system.out.[promtom(a+">"+b+" --> "+result); }
}


5. 논리 연산자 - 두 연산을 논리적으로 처리를 하는 것이고, 결과는 true 또는 false 값을 반환


 


 


 


 & op1& op2 op1과 op2가 모두 true이면 true, 그렇지 않으면 false(op1과 op2를 모두 평가)
&& op1&& op2 op1과 op2가 모두 true이면 true, 그렇지 않으면 false(op1과 op2이면 op2 평가 안함)
ㅣ op1ㅣ op2 op1과 op2가 둘 중 하나 이상이 true이면 true, 모두 false이면 false(op1과 op2를 모두평가)
ㅣㅣ op1ㅣㅣ op2 op1과 op2가 둘 중 하나 이상이 true이면 true, 모두 false이면 false(op1과 op2는 평가 안 함)
! !op op가 true이면 faue이면, false이면 true.
예 int a = 20;
Car mycar = new Car();
System.out.println(mycar.model);
System.out.println(mycar.speed);
System.out.println(mycar.cost);
System.out.println(mycar.color); Class Car{
String model;
int model;
color model;
} 논리 연산자
두 연산을 논리적으로 처리를 한다는 것으로 이것도 논리 연산자의 결과는 true또는 false값을 변환함.
예제
class testEx1
{
public static void main(String [] args) {
boolean a,b,resylt; a=true;
b=flase; result=a&b;
System.out.printin(a+"&" +b+" --> "resylt); result=a&&b;
System.out.printin(a+"&&"+b+" --> "resylt); result=aㅣb;
System.out.printin(a+"ㅣ"+b+" --> "resylt); result=aㅣㅣb;
System.out.printin(a+"ㅣㅣ"+b+" --> "resylt); result=ㅣa;
System.out.printin(a+"!"+b+" --> "resylt);

}
}


 


 


 


6. 비트 연산자 -비트 연산자는 프로그램의 속도를 향상 시키는 것으로 반드시 정수타입이어야 함


 


 


정수타입을 비트 연산 한다는 것의 의미->
한 비트나 여러 비트를 왼쪽과 오른쪽에 관계없이 이동한다는 의미임.
& op1 & op2 op1과 op2 각 비트 단위의 논리곱(AND)
l op1 l op2 op1과 op2 각 비트 단위의 논리합(OR)
^ op1 ^ op2 op1과 op2 각 비트 단위의 배타적 논리합(XOR)
~ ~ op 비트 단위의 보수(0->1, 1->0)
>> op1 >> op2 op1과 op2만큼 오른쪽으로 이동(shift right)
<< op1 << op2 op1과 op2만큼 왼쪽으로 이동(shift left)
>>> op1 >>> op2 op1과 op2만큼 오른쪽으로 이동(shift right)
왼쪽에는 항상 부호에 상관없이 0이 채워진다.
보충 : 비트 연산자의 예 byte a = 51;
a의 이진 값은 "00110011" byte a = 51;
a의 이진 값은 "00110011" byte c = (byte) ~ a;
c의 이진 값은 "11001100" 즉, 204
(~ : 베타라는 것은 1은 0으로 0은 1로 변화는 것을 의미함.) byte c = (byte) a & b;
c의 이진값은 "00100010" 즉, 34
(& : 논리의 곱이라는 것은 1 * 0 = 0, 0 * 0 = 0
0 1= 0 1*1=1 이렇게 되는 것을 의미함.) byte c = (byte) a >> 2;
c의 이진 값은 "00001100" 즉, 12
(>>2 : 오른쪽으로 2bit밀어내는 것을 의미함.) byte c = (byte) b >>2;
c의 이진 값은 "10011010" 즉, 152
(<<2 : 왼쪽으로 2bit밀어내는 것을 의미함.) byte c = (byte) a >>> 4;
c의 이진 값은 "00000011" 즉, 3
(>>>4 : 오른쪽으로 4bit밀어내는 것을 의미함.)


 


 


 


 


 


 


◆제어구문의 정의와 종류◆


***제어구문


로직을 처리하기 위한 방법으로 프로그램의 흐름을 제어하는 문장.


 


 


 



제어구문의 종류
반복적인 구문 ---------> while, do-while, for
조건에 의한 분기 ------> if-else, switch-case
예외처리구문 ----------> tr-catch-finally, throw
분기처리 --------------> break, continue, label:, return
반복구문에는
For문
for(초기화;조건식;증감식){
반복 하고자 하는 문장들;
} 예제
1~10까지의 홀수 끼리의 함과 짝수 끼리의 합을 구하는 것 public class sumTest{
public static boid main(String[] args) {
int i=0, sum-odd, sum_even; sum_odd=0;
sum_even=0;
// for(int i = 0;i <= 10; ++i){
while(i<=10) {
if((i%2)==0)
sum-even=wum_even+i;
else
sum_odd=sum_odd+i;
++i; While문
while(조건식){
반복 하고자 하는 문장들;
} 예제
while문을 이용하여 1~10까지의 홀수 끼리의 함과 짝수 끼리의 합을 구하는 것 Home.java
class home
{
int cup_cnt; //컵의 수
String myName; //명암 //디폴트 생성자
//이것이 없으면 하위클래스 생성시 에러 발생
home()
{
} //생성자이다.문자열을 String 클래스로 받아서 저장한다.
home(String myName)
{
this.myName=myname;
}
do{
반복 하고자 하는 문장들;
}while(조건식);


 


 


 


 


                                                                                                                                                


 


 


 


수고하세요^^