반응형
연산자
1. 단항 연산자
- 부호연산자(양수, 음수) +, -
- ++,-- 나자신을 +1, -1
- int a = 10;
- a++; // a는 11이된다.
- a--; // a는 10이 된다.
➰ a++ 과 ++a의 차이.
먼저 연산후 증가. a++ 증가 후 연산 ++a
- ~ 2진수 값을 반대로 바꿔주는 것.(거의 안씀)
- ! 반대의 의미 (부정의미) true, false 키워드 앞에 붙는다.
- !true는 false를 의미한다.
- casting(type)
public class OperatorEx01 {
public static void main(String[] args) {
//단항 연산자
int i = -3;
int j = -i;
System.out.println("j:" + j);
//++, --
int k = 1;
k++;
System.out.println("k:"+ k);
k--;
System.out.println("k:"+ k);
//증감연산자는 a++, ++a 의미가 조금 다르다.
k = 1;
int h = k++; // 먼저 대입, 이후에 증가.
System.out.println("k:" + k);
System.out.println("h:" + h);
k = 1;
int g = ++k; // 먼저 증가, 후에 대입.
System.out.println("k:" + k);
System.out.println("g:" + g);
k=1;
System.out.println(k++);//1출력 후 2되었다.
System.out.println(++k);//2+1 = 3되고 출력.
System.out.println("--------------------");
//~ 연산자 - 2진수값을 반대로 (쓸일은 없음)
byte b = 10; // 0000 1010
System.out.println(~b); // 1111 0101
System.out.println(~b +1); //-10 보수관계이다.(특징)
System.out.println("--------------------");
System.out.println(!true); //false
boolean bool = !false;
System.out.println(bool); // true
}
}
결과값
j:3
k:2
k:1
k:2
h:1
k:2
g:2
1
3
--------------------
-11
-10
--------------------
false
true
2. 2항 연산자
➰산술 연산자
+ 더하기/ - 빼기/ * 곱하기/ / 나누기/ % 나머지값
➰비교 연산자
비교해서 boolean형으로 반환.
<, <=, >, >=, ==, !=
/* 연산과 비교연산*/
public class OperatorEx02 {
public static void main(String[] args) {
//2항 연산자 - 항이 2개인 연산자
int i = 7 / 3; //몫 2
int j = 7 % 3; // 나머지 1
int k = 7 * 3; // 곱 21
//비교연산
System.out.println(i == j); //f
System.out.println(i != j); //t
System.out.println(i >= 1); //t
System.out.println(i < j); //f
System.out.println(k != 21); //f
//2의 배수 즉 홀수 짝수 배수 구분할때 많이 사용하는 구문~
System.out.println(k % 2 != 0); //t
System.out.println(k % 2 == 0); //f
System.out.println(k % 7 == 0); //t->7의 배수
}
}
➰비트 연산자
& and
| or
➰논리 연산자 ⭐
&, |, &&, ||
& and (양쪽 결과가 같아야 true)
true & true = true
true & false = false
false & false = false
| or (둘 중에 하나만 true여도 true)
true & true = true
true & false = true
flase & flase = false
➰ 빠른연산자
&&
flase && 뒤에를 확인하지 않고 좀더 빠른 연산 가능하다. 무조건 ||
||
true || 뒤에를 확인하지 않고 좀더 빠른 연산 가능 무조건 true
public class OperatorEx03 {
public static void main(String[] args) {
int x = 10;
int y = 20;
//if 뒤에는 조건이 온다. true라면 if문 실행 false라면 else문 실행.
//&&, ||는 앞항을 검사해서 결과가 정해지면, 뒤를 실행하지 않는다.
if(x != 10 && ++y == 21) {
System.out.println("참 입니다.");
} else {
System.out.println("거짓 입니다.");
}
System.out.println("x:" + x + " y:" + y);
if(x == 10 || ++y == 21) {
System.out.println("참 입니다.");
} else {
System.out.println("거짓 입니다");
}
System.out.println("x:" + x + " y:" + y);
}
}
❗ 빠른연산자 사용할 경우 조건문에 ++이 있다면 실행이 안되고 넘어갈수도 있기때문에 결과값이 달라질수가 있다.
➰대입연산자
int a = 1;
a = a + 3; => a += 3; 으로 작성할 수 있다.
+= / -= / *= / /= / %=
public class OperatorEx04 {
public static void main(String[] args) {
int a = 6;
int b = 5;
a +=3; // a = a + 3;과 동일한 표현
b =+ 3; // b = +3;임 주의 연산자 반대로 적으면 안됨.
System.out.println(a);
a -= 4; //5
a *= 10; //50
a /= 3; //16
a %= 4; //0
System.out.println(a);
}
}
3항연산자
하나의 문범이다.
조건식 ? 연산식1(조건이 true) : 연산식2(조건이 false)
💡 무진장 많이 나옵니당~
public class OperatorCondition {
public static void main(String[] args) {
//프로그램에서 랜덤한 값은 유효한 의미를 가집니다.
//System.out.println(Math.random()); //0이상~1.0미만 랜덤값 출력
//유효한 정수 랜덤값 1~10
int num = (int)(Math.random() * 10) + 1; //1~10까지
System.out.println(num);
//랜덤값이 3의 배수인지 아닌지를 검사
String result = num % 3 == 0 ? "3의 배수" : "3의 배수가 아님.";
System.out.println(result);
System.out.println("------------------------");
/*
* 1~100까지 랜덤한 정수를 생성
* 짝수 or 홀수 인지 결과를 출력
*/
int ran_num = (int)(Math.random() * 100) + 1; //1~100까지
System.out.println(ran_num);
String sniffling = ran_num % 2 == 0 ? "짝수" : "홀수";
System.out.println(sniffling);
System.out.println("------------------------");
/*
* -5~5까지 랜덤한 정수를 생성 (0~10)-10
* 어떤 정수가 나오든 절대값으로 출력하세요. (양의 정수로)
*/
int num2 = (int)(Math.random() * 11) - 5;
//따로 3항연산자로 하라는 말씀이 없으셔서 그냥 구글에서 찾아서 Math.abs찾아서 사용했었다.
System.out.println(Math.abs(num2));
//밑에는 3항연산자로 작성
System.out.println( num2 > 0 ? num2 : -num2) ;
}
}
🔹 계산순서
- 소괄호 > 단항 > 이항 > 삼항 >대입
❗ 주의 a++요런것은 대입보다 더 늦게 제일 마지막이다.
반응형
'국비지원 > JAVA' 카테고리의 다른 글
| 2-6. Quiz (0) | 2022.09.22 |
|---|---|
| [JAVA] 2-5. 입력받기 (Scanner사용) (0) | 2022.09.22 |
| [JAVA] 2-3. 형변환과 데이터크기 & casting (0) | 2022.09.22 |
| [JAVA] 2-2. 데이터타입 (0) | 2022.09.22 |
| [JAVA] 2-1. 변수 (0) | 2022.09.22 |