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

4일차) 기본 연산자 및 연산 순위 20180531 am

by 청춘만화 2018. 5. 31.

package b_operation;

public class OperationBasic {

public static void main(String[] args){

/* 1. 연산자의 기본

- 단항연산자 

: ++, --, +(양수), -(음수), ~(비트 연산자=틸트), !, (캐스트연산자=자료형타입 기입)

- 이항연산자 

: 산술연산자 : +, -, *, /, %(나머지), <<(쉬프트 연산자, 연산속도 용, c용), >>, >>>

: 비교연산자 : <, >, <=, >=, ==, !=, instenceof

: 논리연산자 : &, |(or 또는), ^(x or 연산자), &&(논리 결합용), ||

: 대입연산자 : =, op=(+=, -= etc) 

- 삼항연산자 

: 5==5? true 일때 실행 : false 일때 실행

  //{} 영역, [] 배열

2. 연산 우선순위

- 산술 > 비교 > 논리 > 대입(=)    int a = 3 + 4 * 2;

- 단항 > 이항 > 삼항              단, 그때 그때 다름

- 기본 왼쪽에서 오른쪽으로 연산 단, 단항 연산자와 대입(=) 연산자는 제외*/

}

}




package b_operation;

public class OperationEx01 {

public static void main(String[] args){

/*1. 증감연산자(++, --)

- 증가 연산자 : 피연산자의 값을 1증가

- 감소 연산자 : 피연산자의 값을 1감소 */

int i = 3;

i++; //4

++i; //5

int i2=7;

int i3=5;

int i4= ++i2 + i3; //++이 앞에 있으니까 연산 전에 변수의 값이 변한다

//8 + 5 =13  //(i=8) 

int i5= i2++ + i3; //8++ + 5 = 13 //(i=9) 연산과 변수의 값은 다르다 

int i6 = 10;

int i7 = 20;

int i8 = i6++ + ++i7; //31

int i9 = 21;

int i10 = 5;

int i11 = ++i9 + ++i10 + i9++ + ++i10; // 22 + 6 + 22(i9=23) + 7(i=7) = 57

System.out.println(i9);

System.out.println(i10);

System.out.println(i11);

/*2. 부호 연산자(+, -)

- 기본형 중 boolean 형과 char에서는 쓸 수 없다 */


/*3. 비트 전환 연산자(~)  //비트와 관련된 건 2진수로 보면된다.

- 정수형과 char 형에만 사용

- 피연산자를 2진수로 표현했을때 0은1로 1은 0으로 변환한다 */

char c = 'A';

char d = (char)~c;

System.out.println(d);

byte b = 10;

int bb = ~b; //c는 int로 선언되어야 한다. 연산을 하기 때문에

System.out.println(bb);

/*4. 논리부정 연산자

- boolean 형에만 사용가능

- true -> false, false -> trㅕe

- tv 전원버튼과 같은 토글버든을 논리적으로 구현 */

//문제 - false의 값을 저장하는 power 변수를 선언 및 초기화하시오

boolean power = false;

System.out.println(!power);

power = !power;                     //!는 뒤에 올수 없다 

System.out.println(power);

/*5. 산술연산자 

- 사칙연산자, 나머지연산자, 쉬프트연산자가 있다

* 두 개의 피연산자를 취하는 이항 연산자 이다

- 이항연산자의 경우 피연산자의 크기가 둘 다 작은 경우

4byte(int)형으로 먼저 변환 후 연산을 수행한다.

6. 사칙연산자

- int(4byte)형 보다 작은 자료형 간의 연산은 int형으로 변환 후 전환한다

(둘 다 작은 경우)

byte + short => int + int

- 두개의 피연산자 중 자료형의 크기가 큰 쪽에 맞춰서 형변환 후 연산한다

(둘 중 하나만 작은 경우)

byte + long => long + long

char + float => float + float

- 정수형 간의 나눗셈에는 0으로 나누는 것을 금지되어 있다 */


//문제6-1 : ddd를 만들어 aaa + bbb를 담아라

byte aaa =1;

short bbb = 29;  

int ddd = aaa + bbb;

System.out.println(ddd);

//문제6-2 : cc와 ff의 곱을 저장할 수 있는 gg를 선언 및 초기화하시오

char cc = 'F'; //70

byte ff = 120; 

int gg = cc * ff;

System.out.println(gg);

//문제6-3 :: hh와 ii의 합을 저장할 수 있는 jj에 저장해 주세요, 

//단 정상적인 값이 출력되도록 해주세요

int hh = 10;

int ii = 2147483647;

long z = hh;

long x = ii;

long jj = z+x;

System.out.println(jj);

int hh2 = 10;

int ii2 = 2147483647;

//long jj2 = hh2 + ii2; 

//jj를 long으로 바꿔도 대입연산자 전에 연산에서 오버플로우 됨

long jj2 = (long)hh2 + ii2;

System.out.println(jj2);

/*7. 나머지 연산자

- 왼쪽의 피연산자를 오른쪽의 피연산자로 나누고 나머지 값만 돌려주는 연산자

- boolean형을 제외한 모든 기본형에 사용 가능하다 */


//문제 7-1 : ba를 ca로 나눈 몫을 share 변수에 저장해주세요

int ba= 10;

int ca= 3;

int share = ba/ca;

System.out.println(share);


int remain = ba%ca;

System.out.println(remain);

//문제 7-2 : 10을 3으로 나눈 몫은 3이고 나머지는 1이다.

System.out.println(ba+"를 "+ca+"로 나눈 몫은 "+share+"이고 나머지는"+remain+"이다");

}

}



댓글