자바 공부3

윤현우·2022년 8월 14일
0

자바공부

목록 보기
3/6
post-thumbnail

📕연산자


연산자(operater) - 연산을 수행하는 기호 (+ ,- ,* ,/등)
피연산자(operand) - 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)

연산자의 종류

종류연산자설명
산술 연산자+ - * / % << >>사칙연산(+,-,*,/)과 나머지 연산(%)
비교 연산자> < >= <= == !=크고 작음과 같고 다름을 비교
논리 연산자&& || ! & | ^ ~'그리고(AND)'와 '또는(OR)' 으로 조건을 연결
대입 연산자=우변의 값을 좌변에 저장
기타(type) ?: instanceof형변환 연산자, 삼항 연산자, instanceof연산자

단항 연산자

증감 연산자(++) 피연산자의 값을 1 증가시킨다.
감소 연산자(--) 피연산자의 값을 1 감소시킨다.

단항 연산자는 피연산자의 왼쪽에 위치하면 '전위형', 오른쪽에 위치하면 '후위형'이라고 한다.

타입설명사용 예
전위형값이 참조되기 전에 증가 시킨다.J = ++i;
후위형값이 참조된 후에 증가 시킨다.J = i++;

전위형

j = ++i; 

이 식을 풀어서 쓰면

++i;  // 증가 후에	
j = i; // 참조하여 대입

이렇게 된다.

후위형

j = i++;

후위형은 이 식을 풀어서 쓰면

j = i; // 참조하여 대입 후에
i++;    // 증가

이렇게 된다.

산술 연산자

산술 연산자는 일반 사칙연산과 비슷해 어렵지 않다.

하지만 주의해야 할 사항들이 있다.

형변환

서로 다른 타입간의 연산을 수행해야 하는 경우 연산을 수행하기 전에 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형변환(casting)이라고 한다.

기본형 타입에서 boolean을 제외한 나머지 타입은 서로 형변환이 가능하다.

변환수식결과
int -> char(char)65'A'
char -> int(int)'A'65
float -> int(int)1.6f1
int -> float(float)1010.0f

자동 형변환

  • 더 높은 byte의 타입으로 형변환 할 시, 자동으로 컴파일시 형변환을 한다.
  • 하지만 역방향으로 형반환을 해야 한다면 꼭 형변환 연산자를 써줘야 한다.

오버플로우 / 언더플로우

  • 타입의 범위를 넘어가는 상태를 오버플로우(overflow)라고 한다.
char i = 128; // char의 저장할 수 있는 최댓값은 127이라 오버플로우가 발생 -> 따라서 i의 값은 -127
  • 타입의 저장할 수 있는 범위의 최솟값보다 작아지면 언더플로우(underflow)라고 한다.
char i = -129; // char의 저장할 수 있는 최솟값은 -128이라 오버플로우가 발생 -> 따라서 i의 값은 127

비교 연산자

  • 비교 연산자는 두 피연산자를 비교하는데 사용된다.
  • 연산결과는 오직 true와 false 둘 중의 하나이다.
  • 비교하는 피연산자의 타입이 서로 다를 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환 하여 일치 시킨 후 비교한다.
  • boolean과 참조형을 제외한 나머지 자료형에 사용할 수 있다.
비교 연산자연산결과
>좌변 값이 크면, true 아니면 false
<좌변 값이 작으면, true 아니면 false
>=좌변 값이 크거나 같으면, true 아니면 false
<=좌변 값이 작거나 같으면, true 아니면 false
==두 값이 같으면, true 아니면 false
!=두 값이 다르면, true 아니면 false

문자열의 비교

  • 문자열을 비교할 때는, 비교 연산자 '==' 대신 equals()라는 메서드를 사용해야 한다.

📌<깨알 상식 - Scanner>


String str = new String("abc");	// String 클래스의 객체를 생성
String str = "abc"; // 위의 문장을 간단히 표현

String은 클래스 이므로 new를 사용해서 객체를 생성해야 하지만 특별히 String만 new 를 사용하지 않고도 쓸 수 있게 허용한다.

논리 연산자

  • '4보다 작거나 또는 10보다 크다'와 같이 두개의 조건이 결합된 경우 '논리 연산자'를 사용한다.
  • 둘 이상의 조건을 '그리고(AND)'나 '또는(OR)으로 연결하여 하나의 식으로 표현할 수 있게 해준다.

|| (OR결합) 피연산자 중 어느 한 쪽만 true 이면 true를 결과로 얻는다.
&&(AND결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.

논리 연산자의 피연산자가 '참(true)'인 경우와 '거짓(false)'인 경우의 연산결과를 표로 나타내면 다음과 같다.

xyx || yx && y
truetruetruetrue
truefalsetruefalse
falsetruetruefalse
falsefalsefalsefalse

ex) x는 10보다 크고, 20보다 작다. --> 10 < x && x < 20
ex) i는 2의 배수 또는 3의 배수이다. --> i % 2 == 0 || i % 3 == 0

논리 부정 연산자 !

논리 부정 연산자 ! 는 피연산자가 true이면 false를, false면 true를 결과로 반환한다.

간단히 말해 true와 false를 반대로 바꾸는 것이다.

비트 연산자 & | ^ ~ << >>

  • 비트 연산자는 피연산자를 비트단위로 논리 연산한다.

    | (OR연산자) 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다.
    & (AND연산자) 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다.
    ^ (XOR연산자) 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.
    ~ (비트 전환 연산자) 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다.(논리부정연산자 '!'와 유사)
    << >> (쉬프틑 연산자) 피연산자의 각자리를 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.

profile
개발자가 되는 그날까지

0개의 댓글