java 연산자

EUNJI LEE·2023년 4월 10일
0

JAVA

목록 보기
2/12
post-custom-banner

연산자 종류 및 우선 순위

논리 부정 연산자 : !

논리 값을 부정해서 반대 값으로 변경하는 연산자다. 제어문을 활용할 때 많이 쓰인다.

!변수명 또는 !메소드호출구문 또는 !비교연산 으로 표현할 수 있다.

boolean flag=true;
System.out.println("flag : "+flag); //true 출력
System.out.println("!flag : "+!flag); //false 출력
System.out.println("!!flag : "+!!flag); //true 출력

//기능 호출을 부정
String name="LEE";
System.out.println(!name.equals("KIM"); //true 출력
//비교하는 값이 아닌지 확인한다. 아니면 true 값을 출력 가능.
  • 변수명.equals 란? String 자료형은 하나의 클래스이기 때문에 동등 비교 연산을 할 수 없어서 값을 비교하고 싶을 땐 equals를 사용해주어야 한다. 동등 연산자(==)로 비교할 때 String 자료형에 저장된 리터럴이 비교되는 것이 아닌 저장된 주소를 구분하여 비교하기 때문에 구하려는 값에 오류가 난다.

증감 연산자 : ++, —

피연산자의 값에 1을 증감 하는 연산자이다. 앞에 있으면 전위 연산자로 증감 연산자 먼저 실행 후 나머지 연산을 실행한다. 후위 연산자는 다른 연산을 우선 실행하고 증감 연산자를 실행한다.

변수++, 변수—, ++변수, —변수 같은 방법으로 표현 가능하다.

//다른 연산자가 없을 때
int num=0;
num++; //num에 1 더해서 저장.
System.out.println(num); //1 출력
++num; //num에 1 더해서 저장.
System.out.println(num); //2 출력

//전위, 후위 연산
num=0; //데이터를 0으로 초기화.
int result=0;
result=++num; //num+1 연산을 진행 후 대입
System.out.println(num); //1 출력

num=0; //데이터를 0으로 초기화.
int result=0;
result=num++; //num을 result에 대입 먼저 진행 후 num+1 연산.
//result는 0, num은 1이 된다.
System.out.println(num); //0 출력

비교 연산자 : ==, !=

두 개의 피연산자를 비교할 때 쓰이는 연산자다. 데이터가 같은지 다른지를 비교하는 동등 비교 연산자와 숫자 값의 크기를 비교하는 크기 비교 연산자가 있다.

  • 동등 비교 결과 값으로는 항상 논리 값 true, false 가 반환된다. == 은 비교한 값이 같을 때 true를 출력하고 != 은 비교한 값이 다를 때 true를 출력한다.
    int a = 10;
    int b = 20;
    int c = 10;
    System.out.println(a==c); //true 출력
    System.out.println(a!=b); //true 출력
    실수형, 문자형도 비교가 가능하다. 문자형은 데이터가 숫자로 저장되어 있기 때문에 숫자의 크기를 비교해서 같은 문자인지 아닌지를 판단할 수 있다.
    • 문자 비교하기

      ```java
      char ch1='A'; //65
      char ch2='a'; //97
      char ch3='A';
      System.out.pritln(ch1==ch2); //false 출력
      System.out.println(ch1==ch3); //true 출력
      System.out.println(ch1==65); //true 출력
      ```

      문자열은 동등 비교가 불가하다. 따로 정해진 equals 기능을 활용해야 비교할 수 있다. 위에 eqauls 참고.

  • 크기 비교 두 개의 피연산자 값의 크기를 비교한다. <, >, <=, >=
    int a=20;
    int b=30;
    System.out.println(a>b); //false 출력
    System.out.println(b>=30); //true 출력
    
    //Scanner 클래스를 활용해서 사용자의 나이를 입력 받아 성인,미성년자 구분이 가능
    //Scanner 선언이 되어있다고 가정
    System.out.print("나이 입력 : ");
    int age=sc.nextInt();
    System.out.println("성인인가요? "+(age>=20));
    //입력한 값에 따라 성인인가요? true/false 로 구분해서 출력

논리 연산자 : &&, ||

논리 값 두 개를 비교할 때 사용한다.

&& : AND 연산. 논리 값이 둘 다 true 일 때만 true 를 반환한다.

|| : OR 연산. 논리 값 중 하나만 true 여도 true 를 반환한다. 둘 다 false 일 때만 false 반환.

//관리자 아이디를 구분할 때 사용 할 수 있다.
String userId="admin";
String password="1111";
//비밀번호는 특수문자나 영문이 섞이기도 해서 문자열로 받는 것이 좋다.
System.out.println(userId.equals("admin")&&password.equals("1111")); //true 출력

String address=sc.next(); //사용자로부터 주소를 입력 받는다.
System.out.println(address.equals("서울")||address.equals("경기도"));
//입력한 주소가 서울이나 경기도 일때 true 출력. 둘 다 아닐 때 false 출력.

복합 대입 연산자

자기 자신과 연산을 실행한 후 연산 결과를 자신에게 누적 해서 대입하는 연산자다.

+=, -=, *=, /=, %= 으로 사용 가능하다. 증감 연산자는 1씩 증가하지만 대입 연산자는 원하는 값을 증가 시킬 수 있다.

int a=0;
a+=10; //a=a+10 ->10
a+=100; //a=a+100 ->110
System.out.println(a); //110 출력

//과목의 총합계와 평균을 구해볼 수 있다
int total = 0;
System.out.print("국어 : "); //사용자가 입력할 값을 구분할 수 있도록 출력
total=sc.nextInt();
System.out.print("수학 : ");
total+=sc.nextInt(); //두번째 값부터는 누적할 수 있게 복합 대입 연산자를 사용한다.
System.out.print("영어  : ");
total=sc.nextInt();
System.out.println("합계 : "+total+", 평균 : "+((double)total/3));
//사용자가 입력한 값의 합계와 평균이 출력된다.
//평균값은 소숫점을 생각해서 double 자료형으로 변환해준다.

삼항 연산자

조건식 ? true일때 처리 방식 : false일때 처리 방식 같은 형태로 나타낼 수 있다. 삼항 연산자 안에 삼항 연산자를 중첩 해서 사용하는 것도 가능하다. 다만 가독성이 떨어지기 때문에 굳이 사용하진 않는다.

//입력받은 점수에 따라 합격/불합격을 구분
int num=0;
System.out.print("점수 입력 : "); //사용자가 입력할 수 있도록 메시지 출력
num=sc.nextInt();
String result=num>=70?"합격":"불합격";
//입력한 점수가 70점 이상이면 합격, 70점 미만이면 불합격을 저장한다.
System.out.println(result);
profile
천천히 기록해보는 비비로그
post-custom-banner

0개의 댓글