▶ 연산자 종류 및 우선순위
종류 | 구분 | 세부구분 | 연산자 | 우선순위 |
최우선 연산자 | 직접 접근 연산자 | ( ) [ ] | 1 | |
단항 연산자 | + - ! (자료형) ++ -- ~ | 2 | ||
3이항 연산자 | 산술 연산자 | * / % | 3 | |
+ - | 4 | |||
비교 연산자 | > < >= <= | 5 | ||
== != | 6 | |||
논리 연산자 | 일반 논리 연산자 | && | 7 | |
|| | 8 | |||
삼항연산자 | (조건식)? 참일때 조건식 : 거짓일때 조건식 | 9 | ||
대입연산자 | 순수대입 | = | 10 | |
산술대입 | += -= *= /= %= | 11 |
* 이외에 비트 논리 연산자, 쉬프트 대입 등이 있지만 잘 사용하지 않아 생략하였음
▶ 산술 연산자
- 일반 수학과 동일한 연산방법, 우선순위를 갖는 연산자. 단, %는 나누기의 나머지 값을 구하는 연산자이다.
- 종류 : + 덧셈, - 뺄셈, * 곱셈, / 나눗셈, % 나머지값을 구하는 연산자
ex) 정수 2개를 입력받아 연산을 해보자
Scanner sc = new Scanner(System.in);
System.out.print("정수입력 1: ");
int input1 = sc.nextInt();
System.out.print("정수입력 2: ");
int input2 = sc.nextInt();
System.out.printf("%d / %d = %d\n", input1, input2, input1/input2);
System.out.printf("%d %% %d = %d\n", input1, input2, input1%input2);
▶ 증감 연산자
- 피연산자의 값에 1을 더하거나 빼는 연산자로 위치에 따라 결과값이 다르게 나타나는 연산자.
- 종류 : ++, --
- 사용법 : 전위연산(먼저 연산 후 타 연산 실행),
후위연산(타 연산 우선실행 후 연산)
ex) 전위연산
// 전위연산 : 다른연산자보다 먼저 증가/감소
int iNum1 = 10;
int iNum2 = 10;
++ iNum1;
-- iNum2;
System.out.println("iNum1="+iNum1); // 11출력
System.out.println("iNum2="+iNum2); // 9출력
int temp1 = 5;
System.out.println( ++temp1 + 5 ); // 11출력
ex) 후위연산
// 후위연산 : 다른연산자보다 나중에 증가/감소
int iNum1 = 10;
int iNum2 = 10;
iNum1++; // 10 + 1
iNum2--; // 10 - 9
System.out.println("iNum1="+iNum1); // 11 출력
System.out.println("iNum2="+iNum2); // 9 출력
int temp2 = 3;
System.out.println( temp2-- + 2 ); // 5 출력
System.out.println( temp2 ); // 2 출력
int a = 3;
int b = 5;
int c = a++ + --b; // 3 + 4 = 7
System.out.printf("%d / %d / %d\n", a,b,c); // 4 / 4 / 7
▶ 비교 연산자
- 데이터의 값을 비교하는 연산자, 결과값은 항상 논리값 (True, False)로 나타나는 연산자
- boolean과 참조형을 제외한 모든 자료형에 사용 가능
1) 데이터가 같은지, 다른지 비교할 때 사용하는 연산자
- a == b : a와 b가 같으면 true
- a != b : a와 b가 다르면 true
ex)
int a = 10;
int b = 20;
System.out.println(a==b); // a는 b와 같다; False 출력
System.out.println(a!=b); // a는 b와 다르다; True 출력
2) 두 피연산자의 값의 크기를 비교하는 연산자
- a > b : a가 b보다 크면 true
- a < b : a가 b보다 작으면 true
- a >= b : a가 b보다 크거나 같으면 true
- a <= b : a가 b보다 작거나 같으면 true
ex)
int a = 10;
int b = 20;
System.out.println(a>b); // FALSE
System.out.println(a<b); // TRUE
int c = 4;
int d = 5;
System.out.println(c>d); // FALSE
System.out.println(c+1 <= d); // TRUE
System.out.println(c >= d-1); // TRUE
ex ) 주어진 값이 홀수인지 짝수인지 구분하는 식
int temp = 123;
System.out.println("temp는 짝수인가? " + (temp%2==0)); // FALSE
System.out.println("temp는 짝수인가? " + (temp%2!=1)); // FALSE
System.out.println("temp는 홀수인가? " + (temp%2==1)); // TRUE
System.out.println("temp는 홀수인가? " + (temp%2!=0)); // TRUE
▶ 논리 연산자
- 논리 값 두 개를 비교하는 연산자
- 종류 : && (두 피연산자가 모두 true일 때 true 반환 = AND)
|| (두 피연산자 중 하나만 true여도 true반환 = OR)
ex) && 연산자 (AND)
int a = 100;
System.out.println("a는 100이상이면서 짝수인가? "+((a>=100)&&(a%2==0))); // TRUE
int b = 5;
System.out.println("b는 1~10사이의 숫자인가? "+((10>=b)&&(b>=1))); // TRUE
ex) || 연산자 (OR)
int c = 10;
System.out.println("c는 10초과이거나 짝수인가?"+((c>10)||(c%2==0))); // TRUE
▶ 논리 부정 연산자
- 논리 값을 부정하여 반대 값으로 변경, 제어문 활용시 많이 쓰임
- !___
ex) 단순 논리 부정
boolean bool1 = true;
boolean bool2 = !bool1;
System.out.println("bool1= "+bool1); // true
System.out.println("bool2= "+bool2); // false
ex) 정수를 입력받아, 해당정수가 1-100사이값인지, 혹은 1-100사이값이 아닌지 확인하는 식
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int input = sc.nextInt();
// 입력받은 정수가 1이상, 100이하값인지 확인
boolean result1 = 1<=input && input<=100;
System.out.printf("%d 은/는 1이상, 100이하의 정수인가? : %b\n",input,result1);
// 입력받은 정수가 1미만, 100초과값인지 확인
boolean result2 = input<1 || input>100; //반대의 경우 OR 연산을 사용해야함!!
boolean result3 = !result1;
System.out.printf("%d 은/는 1미만, 100초과의 정수인가? : %b\n",input,result2);
System.out.printf("%d 은/는 1미만, 100초과의 정수인가? : %b\n",input,result3);
▶ 복합 대입 연산자
- 다른 연산자와 대입 연산자가 결합한 것으로, 자기 자신과 연산 후 결과를 자기 자신에게 누적 대입하는 연산자
- 증감 연산자는 1씩 증가 혹은 감소시키는 연산자이지만,
대입연산자는 원하는 값을 증가시키고 그 변수에 저장하는 연산자이다.
a += 10 | a = a + 10 |
a -= 10 | a = a - 10 |
a *= 10 | a = a * 10 |
a /= 10 | a = a / 10 |
a %= 10 | a = a % 10 |
ex)
int a = 10;
// a에 1을 증가시키고 싶은 경우
a= a+1; // a++; a+=1;
System.out.println("a를 1증가 : "+a);
// a에 4를 증가시키고 싶은 경우
a +=4;
System.out.println("a를 4증가 : "+a);
// a를 10 감소시키고 싶은 경우
a -= 10;
System.out.println("a를 10감소 : "+a);
// a를 3배 증가시키고 싶은 경우
a *= 3;
System.out.println("a를 3배증가 : "+a);
//a를 6으로 나눴을 때 몫
a /= 6;
System.out.println("a를 6으로 나눈 몫 : "+a);
//a를 2로 나눈 나머지
a %= 2;
System.out.println("a를 2로 나눈 나머지 : "+a);
▶ 삼항 연산자
- 조건식의 결과 값에 따라 연산을 처리하는 방식, 값이 참일경우 식1, 거짓일경우 식2를 수행하는 연산자
- 삼항 연산자 안에 삼항 연산자를 중첩하여 사용할 수 있다
- [작성법] 삼항연산자 ? 식 1 : 식 2
ex) num은 30보다 크면 num 은 30보다 큰 수, 아니면 num은 30이하의 수이다 출력하기
int num = 30;
String str1 = "num 은 30보다 큰 수";
String str2 = "num 은 30이하의 수";
String result = num > 30 ? str1 : str2;
System.out.println(result); // num 은 30이하의 수 출력
ex) 입력받은 정수가 양수인지, 음수인지 구분하기 (단, 0은 양수로 가정)
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int input = sc.nextInt();
String result1 = input >=0 ? "양수" : "음수";
System.out.println("입력한 정수는 " + result1 + "입니다.");
System.out.println((input >=0 ? "양수" : "음수") + "입니다");
'Java > 공부' 카테고리의 다른 글
[Java] 반복문, 분기문, 배열, 2차원 배열 (0) | 2022.03.17 |
---|---|
[Java] 조건문 (Condition) (0) | 2022.03.15 |
[Java] 형변환 (Casting) (0) | 2022.03.14 |
[Java] Project & Class 생성 및 실행해보기 (0) | 2022.03.10 |
[Java] Eclipse 글꼴 & 테마 변경하기 (0) | 2022.03.10 |