[오늘 공부할 부분]

 

- 어제 헷갈렸던 연습문제 복습

1. 연산자와 연산식

2. 연산자의 종류


- 어제 문제 복습

 

첫번쨰 -> 첫번째, 덧셉결과 -> 덧셈결과 오타가 있네요 !

※ 헷갈렸던 부분 :

scanner.nextLine()은 문자열을 읽어오고 그걸 다시 Integer.parseInt()로 받으면 int화 될 것 같은데 왜 첫번째 수에 A를 넣고 두번째 수에 B를 넣으면 오류가 나는 것일까? 내가 가정했던 부분은 A가 65 이고 B가 66이기 때문에 그 합이 결과값으로 나올 거라 예상했다. 

 

팀원들과 토론 후 내린 결론 (확실하지 않음...) → 

① String 타입은 char 타입으로 강제 캐스팅할 수 없다. - char 타입 이었다면 int 타입으로 변환되서 가능했을지도.

② int 타입엔 문자인 'A'나 'B' 자체가 들어갈 수 없다.

③ 참고 ( char 타입 산술 연산 할 때 int 타입 결과 값이 아니라 char 타입으로 받는 방법 )

 

 

 

1. 연산자와 연산식

① 기초 개념

  • 연산자(operator) : 연산에 사용되는 표시나 기호 ex) +, -, *, /, %
  • 피연산자(operand) : 연산되는 데이터 ex) 3 + x 연산식의 피연산자는 3과 x
  • 연산식(expression) : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것
  • 연산 우선순위 : 괄호()로 감싼 연산이 최우선순위를 갖는다.
  • 연산식은 반드시 하나의 값을 산출한다.
  • 산술 연산자의 경우 숫자타입(byte, short, int, long, float, double)으로 결과 값이 나오고, 비교연산자와 논리 연산자는 논리타입(boolean)으로 결과 값이 나온다.

② 연산자의 종류

출처 : https://docs.oracle.com/javase/tutorial/
출처 : https://medium.com/@katekim720/ , 신용권 <혼자 공부하는 자바>

③ 연산의 방향과 우선순위

  • 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순우를 갖는다.
  • 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.
  • 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정한다.

 

2. 연산자의 종류

 

 단항 연산자 : 부호 연산자 (+,_), 증감 연산자(++,--), 논리 부정 연산자(!)

  •  부호 연산자: 양수 및 음수를 표시하는 +, -를 말한다. boolean, char 타입을 제외한 나머지 기본 타입에  사용할 수 있다.

※ 주의할 점은 부호 연산자의 결과가 int 타입이라는 것 ! 따라서 byte 타입 변수를 부호 연산하면 int 타입으로 변환된다.

 

  • 증감 연산자(*헷갈리는 파트): 변수의 값을 1증가 시키거나 1 감소 시키는 연산자. ( ※ 참고로 ++i  i = i + 1 의 연산 속도는 같다.)

출처 :&nbsp;https://unknownyun.blogspot.com/2018/08/blog-post_38.html

  • 논리 부정 연산자 (!) : 피연산자가 true이면 false 값을 산출, 피연산자가 false이면 true 값을 산출

 

 

 

② 이항 연산자 : 산술 연산자 (+, -, *, /, %), 문자열 결합 연산자(+), 비교 연산자(<,<=,>,>=,==,!=), 논리 연산자(&&,||,^,!), 대입 연산자(=,+=,-=,*=,/=,%=)

 

  • 산술 연산자와 문자열 결합 연산자는 어제 내용과 겹치기 때문에 오늘은 넘어가도록 한다.

 

  • 비교 연산자에서 주의할 부분은 float 타입이다. 실수의 저장 방식인 부동 소수점 방식때문에 아래와 같이 0.1 과 0.1f의 값이 다르다. 0.1f는 0.1의 근삿값(0.10000000149011612)으로 표현된다. 따라서 0.1보다 큰 값이 되어버린다. 
  •  이것의 해결책은 다음과 같이 피연사자를 모두 float 타입으로 변환하거나 정수타입으로 변환해서 비교하는 방법이 있다.
  • String 변수 비교: 기본 타입 변수 값을 비교할 때는 == 연산자를 사용하지만, 참조 타입인 String 변수를 비교할 때에는 equals() 메소드를 사용한다.

 

 

  • 논리 연산자

출처 : https://medium.com/@katekim720/ , 신용권 <혼자 공부하는 자바>

  • &보다 &&가 더 효율적 : &&는 앞의 피연산자가 false라면 뒤의 피연산자를 평가하지 않고 바로 false 라는 산출결과를 내지만 &는 두 피연산자를 모두 평가해서 산출 결과를 내기 때문 ! (| 와 ||도 마찬가지)
  • 논리 연산은 흐름 제어문인 조건문(if), 반복문 (for, while) 등에서 주로 이용

 

  • 대립 연산자는 오른쪽 피연산자 갑을 왼쪽 피연산자인 변수에 저장한다.
  • 대립 연산자는 모든 연산자들 중에서 가장  낮은 연산 순위를 가지고 있기 때문에 제일 마지막에 수행 된다.

 

 

③ 삼항 연산자

 

  • (조건식) ? A : B 를 말하며 조건이 true면 A를 산출하고, false이면 B를 산출 한다.
  • if 문을 쓰면 길어질 코드를 한 줄에 간단하게 작성 가능하기 때문에 효율적이다.

 

+ Recent posts