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+"이다");
}
}
'새로워지기 > 서른의 생활코딩' 카테고리의 다른 글
5일차) 연산자 정리 예제 _20180531 am (0) | 2018.06.01 |
---|---|
5일차) java 연산자 및 예제(2) _20180601 am (0) | 2018.06.01 |
4일차) 변수 정리 예제 _20180531 am (0) | 2018.05.31 |
3일차) 데이터 모델링으로 가기위한 요구사항 분석 _20180530 pm (0) | 2018.05.30 |
3일차) 변수에 대해 알기2(논리,문자,정수,실수,문자열,형변환) _20180530 am (0) | 2018.05.30 |
댓글