JAVA

[JAVA] 연산자 / 제어문

sian han 2022. 2. 10. 22:16

 

※ 연산자

 

▶ 연산자의 종류

1. 단항 연산자 : ++ -- + - ~ !

 - 왼쪽에서 오른쪽으로 연산

 

+ , - ) 피연산자의 부호를 변경하는데 사용

~ ) 비트전환연산자 / 잘모르겠음

! ) 논리부정연산자

 -  boolean형에만 사용
    true는 false로, false는 true로 변경. 따라서 조건문과 반복문의 조건식에 사용됨

 

++a ) 선증가 : 증가 후 a 찍기

a++ ) 후증가 : 일단 찍고 증가

                ▽       

      ++a , a++ = a=a+1

  단독 (단항)으로 사용되는경우,

  전위형, 후위형 결과는 같다

 

 

 

2. 산술 연산자 * / % + - << >> >>>

% ) 나머지 연산자

/ ) 나눗셈

 

 

3. 비교 연산자 > < <= >=

 - 비교 연산자의 결과는 언제나 true , false 

 

 > 크다                                       아가리 왼쪽 : 크다 / 오른쪽 : 작다
 < 작다
 >= 크거나 같다
 <= 작거나 같다
 == 같다                                      JAVA에서 같다는 ==로 표현한다 !!! 자꾸 헷갈리는데 주의 !!
 !== 같지않다

 

 

4. 논리 연산자 & ^ | && || ?:

 - 논리 연산자의 결과는 언제나 true , false 

 

&& ) and 

 || ) or 

^ ) (XOR) 피연산자가 같으면 false, 다르면 true

 

&&, || ) Short-Circuit AND, OR 연산자

 - 두 값을 가지고 논리 연산할 경우 첫 번째 값만을 가지고 참, 거짓을 판단할 수 있다면, 
거기서 바로 연산을 빠져 나와 효과적이고 빠른 코드를 만들 수 있는 연산자

 - || 연산자는 첫 번째 값이 참이면 그 연산은 무조건 참이 되고, 
&&연산자는 첫 번째 값이 거짓이면 그 연산은 무조건 거짓이 되므로 더이상 연산을 진행하지 않고 빠져나온다

 

 

 

예제

1) int 형 변수 i가 200보다 크거나 같고 500보다 작거나 같을 때 true인 조건식
i >=200 && i <= 500


2) char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식
!(ch == ' ' || ch =='\t') 또는 ch!=' ' && ch !='\t'

3) char형 변수 ch가 'y' 또는 'Y'일 때 true인 조건식
ch == 'y' || ch == 'Y'

4) boolean형 변수 powerOn이 false일 때 true인 조건식
!powerOn 또는 powerOn==false

5) 문자열 참조변수 lang이 "java"일 때 true인 조건식
lang.equals("java") 또는 "java".equals(lang)

6) char형 변수 a가 숫자(‘0’~‘9’)일 때 true인 조건식
a>= '0'  && a <='9'

7) char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식
(ch>= 'a'  && ch <= 'z') || (ch>='A' && ch <= 'Z')

8) int형 변수 year가 400으로 나누어 떨어지거나 또는 4로 나누어 떨어지고 100으로 나누어 떨어지지 않을 때 true인 조건식

year%400==0 || (year%4==0 && year%100!=0)

 

 

 

 

 

 -논리 연산자에 비트논리연산자 라는게 있는데 이해못했음. 배우긴했는데 모르겠어서 정리못하겠음;;

 

 

 

5. 삼항 연산자 ?:

 - 변수선언 = (조건식)?값1:값2;

 - 이때 변수 , 값1, 값2 데이터 타입이같아야함

 - true : 왼쪽 / false : 오른쪽 값 도출

 - 괄호() 안 조건식에는 비교 or 논리연산자 이용

      : 결과가 true / false 로 나와야하기때문

int a = 1, b=2;
int c=(a>b)?a:b;
System.out.println("더큰 수는" + c);
int num = 17;
String result = (num%2==1)? "홀수":"짝수";
System.out.println("num=" + num + " => "+ result);

 

6. 대입 연산자 = *= /= %= += -= <<= >>= >>>= &= ^= |= 

 - 왼쪽에서 오른쪽으로 연산

 - 좌변과 우변의 타입이 일치해야 함(형 변환)

a+=b; // a=a+b
a/=b; // a=a/b
a*=b; // a=a*b

 

 

Quiz : 결과가 true / false 로 나오는 연산자는 ? 

     - 비교연산자, 논리연산자, 삼항연산자

 

 

 

▶ 연산자의 우선순위

산술 > 비교 > 논리 > 대입

단항 > 이항 > 삼항

 

 

 

 

※ 제어문

▶ 조건문

if 문 : 특정 조건이 만족될 때만 실행하고 싶은 경우 사용

 - 형태 : if (조건식) {

                             문장;       }  => 조건식이 참이면 문장을실행,

                                            만족하지않으면 한번도 수행하지않음

 *조건식 : 비교 || 논리연산자 이용해야함 / 결과값 true || false 가 나와야하기 때문                               

int num = 17;
String result ="";
if(num%2==1){ 
	result ="홀수";
}else{
	result ="짝수";
}

System.out.println("num=" + num + " => "+ result);

 

 

 

 

 

 ~ 오늘 배운 새로운 메서드 ~

▣ equal 메서드 : 변수.equals

 - if 문 사용할 때 

      if "남자" 라면 ~ if "여자" 라면 라고 코딩을 하고싶지만

      컴퓨터는 일치하는지 안하는지 "숫자" 만 인식할 수 있기 때문에

      문자가 일치하는지 확인하기 위해서는 .equal() 메서드를 사용해주어야한다

if(gender.equals("M"))

  = 변수 gender 의 값이 M 인경우에

 

 

 

외에 오늘 이진수 어쩌구 . . 진법변환 어쩌구 . . 쉬프트연산 어쩌구 . . 등등 많은 걸 배웠지만

이해하지못했기 때문에 적지 못했다

 

진법변환은.. 요즘 컴퓨터들이 다 해주는데 내가 진법변환 방법을 꼭 알아야할까 ? ..

그딴걸로 내 뇌의 '메모리' 를 '할당' 할 수 없다 ( 제법 개발자 같은발언 ~ good

 

쉬프트웅앵은 선생님께서 자주쓰진않는거니까 이런게 있구나 ~ 하면된다고하셨다

선생님의 말씀을 믿어보기로했다