본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

5일차) java 연산자 및 예제(2) _20180601 am

by 청춘만화 2018. 6. 1.

package b_operation;

public class OperationEx01 {

public static void main(String[] args){

/* 8. 쉬프트 연산자(<<, >>, >>>그래픽에 이용)

- 정수형 변수에만 사용가능

- 피연산자의 각 자리(2진수) 오른쪽 또는 왼쪽으로 이동

- 곱셈과 나눗셈을 할때 연산속도가 좋음으로 사용한다

- << : x<<n은 x*2^n

- >> : x>>n은 x/2^n

- 양수이면 빈곳을 0으로 채우고 음수이면 빈곳을 1로 채운다 */

System.out.println(10<<18);


/* 9. 비교연산자

- 주개의 변수 또는 리터럴을 비교하는데 사용되는 연산자

- 주로 조건문과 반복문의 조건식에 사용되며 연산 결과가 true, false  

*삼항연산자와 유사

- 이항 연산자 //단, 양쪽의 타입이 무조건 같아야한다

10. 대소비교연산자(<> <= >=)

- 기본형 중에 boolean 형을 제외한 자료형에 사용할 수 있다

11. 등가비교연산자(==, !=)

- 모든 자료형에 사용할 수 있다

- 기본형의 경우, 저장된 값을 비교

- 참조형의 경우, 저장된 주소를 비교

수식 연산결과

x < y x가 y보다 작을때 true, 그 외에는 false

x > y x가 y보다 클  때 true, 그 외에는 false

x <= y x가 y보다 작거나 같을때 true, 그 외에는 false

x >= y x가 y보다 크거나 같을때 true, 그 외에는 false

x == y x와 y가 같을때 true, 그 외에는 false

x != y x와 y가 다을때 true, 그 외에는 false  */

//[예제]

//15를 저장할 수 있는 변수를 선언 및 초기화 하세요

int da= 15;

//15.000001를 저장할 수 있는 변수를 선언 및 초기화 하세요

float db= 15.000001f;

//da와 db가 같은지 결과를 출력하세요

System.out.println(da==db);

System.out.println(0.1==0.1f); //double은 0.1의 근사치(2^n), float는 0.1

System.out.println('A'==65); //연산을 위해 타입을 맞춰야함. int로 전환(A=65)된 후 연산 


/* 12. 비트 연산자 &, |, ^  비트 -> 2진수로 전환 먼저

- 이진 비트 연산을 수행한다

- float와 double을 제외한 모든 기본형에서 사용가능

&(and 연산) : 피연산자 양쪽 모두 1일때만 1

|(or) : 피연산자 중 한쪽의 값이 1이면 1이다

^(X OR) : 피연산자의 값이 서로 다르면 1이다

3 00000011

5 00000101

^ 00000110 -> 6

| 00000111 -> 7

& 00000001 -> 1

회로 연산에서 사용됨  */

System.out.println(3^5);


/* 13. 논리(=>boolean의 결과를 받거나 연산에 사용된다)연산자(&&, ||)

- 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만 허용한다

- 조건문과 반복문에서 조건식 간의 결합에 이용한다.

&&(and 결합) - 피연산자 양쪽모두 true 일때만 true 반환 <- 연산 순서가 * 같다

||(or 결합) - 피연산자 중 어느 한 쪽이라도 true이면 true <- 연산 순서가 + 같다

//정규식을 판단하기 위한 기준    */ 

//문제1. 문자 하나를 저장할 수 있는 변수 dc를 선언하시오

char dc;

//문제2. dc 초기값 으로 K 저장

dc = 'K';

//문제3. dc가 영어 대문자일때 true가 출력되도록 만들어주세요

System.out.println('A'<= dc && dc<='Z'); 

//문제4. dc가 영어 소문자일때 true가 출력되도록 만들어주세요

System.out.println('a'<= dc && dc<='z'); 

//문제5. dc가 영문자인지 판단하는 조건식을 만들어주세요

System.out.println('A'<= dc && dc<='Z' || 'a'<= dc && dc<='z'); 

//문제6. dc가 숫자'형'인지 판단하는 조건식을 만들어주세요

System.out.println('0'<= dc && dc<='9'); 

/* 14. 삼항연산자

- 세개의 피연산자를 필요로 한다

- 삼항 연산자의 조건식에는 연산결과가 true 또는 false인 식이 사용된다

- 기본구조

조건식 ? 식1(true용) : 식2(false용) */

int x1 = 10;

int y1 = -10;

int absX = x1>0 ? x1 : -x1;   

int absY = y1>0 ? y1 : -y1;   //앱솔루트, 절대값, 어떻게 나오든 양수로 나오도록 하는 활용

System.out.println(absX +"," + absY);

/* 15. 대입연산자(=, op=)

- 변수에 값 또는 수식의 연산 결과를 '저장'하는데 사용한다

- 연산우선순위가 가장 낮다

*/

//문제1. 10의 값을 젖아할 수 있는 변수 ea를 선언 및 초기화 해주세요

int ea = 10;


//문제2. ea의 값에 20을 더한 값을 ea에 저장해주세요

ea = ea + 20;

ea +=20; //내 자신에게 연산하여 내 자신에게 저장한다

ea *=2; //내 자신에게 연산하여 내 자신에게 저장한다

ea /=10; //내 자신에게 연산하여 내 자신에게 저장한다

ea <<=3; //2^3

System.out.println(ea);

//문제3. 소수점 넷째자리에서 반올림하여 셋째짜리까지 표현해주세요 

float fff = 3.141592f;

// fff *=1000;   //3141.592f

// fff += 0.5;   //3142.592f 

// int a = (int)fff; 

// float b1 = a; 

// b1 /= 1000;

// System.out.println(b1);


// VS.

// fff *=1000;  //3141.592f

// fff += 0.5;  //3142.592f 

// (int) //3142

// 1000f //3.142

fff = (int)(fff*1000+0.5)/1000f;

System.out.println(fff);

//문제4. 

//1) 523.845636를 변수 dddd에 저장

float dddd=523.845636f;

//2) dddd를 소수점 5자리에서 반올림하여 4째자리까지 표현

dddd = (int)(dddd*10000+0.5)/10000f;   //(int)(double)/(float)

System.out.println(dddd);

double dddd1=523.845636;

//2) dddd를 소수점 5자리에서 반올림하여 4째자리까지 표현

dddd1 = (int)(dddd1*10000+0.5)/10000.0;

System.out.println(dddd1);

double dddd2=523.845636;

//2) dddd를 소수점 5자리에서 반올림하여 4째자리까지 표현

dddd2 = (int)(dddd2*10000+0.5)/10000.0;

System.out.println((float)dddd2);

}

}



댓글